Slashdot Mirror


VCF - A Free BSD Competitor To Trolltech's Qt?

TioHoltzman writes "There's a new 0-6-5 release available of the VCF, aka the Visual Component Framework. This release has a slew of new features, and it looks like it could become a real contender against Trolltech's Qt toolkit. It currently runs on Win32 platforms with an active Mac OS X port underway. There's still lots to do, but it can run some of the samples now on OS X. There are some screenshots here (1), here (2), and here (3)."

12 of 75 comments (clear)

  1. Re:Frameworks arent platform specific by jhunsake · · Score: 4, Informative

    Notice the space between "Free" and "BSD"? Notice that "To" is capitalized?

    Ok, then you should be smart enough to figure out that the title is really

    "VCF - A free BSD Competitor to Trolltech's Qt?"

  2. Re:Frameworks arent platform specific by Anonymous Coward · · Score: 1, Informative

    QT is awesome. Its extremely simple, clean, and just works.

    I don't see how moc fits in your description -- are you mocking us?

  3. Re:What am I missing? by SewersOfRivendell · · Score: 3, Informative
    Why is this just a competitor to QT? Is there something specific about it that makes it directly competitive with QT? Isn't it a windowing framework, making it competitive with GTK and others as well?

    GTK and most others don't compile Mac OS X native apps, and GTK isn't written in C++. GTK 1.4 was ported for use with earlier versions of the GIMP, but no one's bothered to port a modern version, it would appear. Most frameworks don't bother with a Mac port. So Qt can currently use native (or pseudo-native, in the OS X case) controls on Windows, Mac, and Linux, and VCF would be a new competitor in that space. wxWindows probably already competes there, but the results I've seen from wxWindows apps have been pretty mixed, and the source code isn't pretty, being infested with win32 (pre-OO) notions of how event handling should work.

  4. Isn't this just WxWindows all over again? by FFFish · · Score: 4, Informative

    And doesn't Wx have the lead by, oooh, must be about five years?

    Of course, the biggest flaw with Wx is that its lead developer doesn't have the cojones to submit a Slashdot story as if he were an impartial user...

    --

    --
    Don't like it? Respond with words, not karma.
  5. Re:What am I missing? by stienman · · Score: 3, Informative
    Currently QT is really the only substantial cross platform framework that really does well on Windows as well as Linux/bsd/etc.

    However, QT is licensed such that Windows work cannot really be done for free. It may be open, but it certianly isn't free. This isn't a bad thing, but it is limiting.

    VCF is not only free and open, but it is licensed under the BSD license, meaning that it can (and likely will) gain a much larger audience than QT simply because it can do (or will do) everything QT does, but without cost. One can even modify the code without releasing their proprietary changes which is a big plus for many companies. One of the reasons, I suspect, Apple took from FreeBSD instead of Linux when they needed to Unix-ify their OS was because of the freedom it gave them. (probably also because BSD had already fought its legal battles and was known to be copyright safe)

    GTK and others really don't support windows and linux together as well as QT does.

    From the Features:
    The Visual Component Framework is a C++ application framework that offers a modern, clean, C++ architecture and is designed to be cross platform. The core framework is divided into three major libraries, the FoundationKit, the GraphicsKit, and the ApplicationKit. The FoundationKit provides basic services such as file access, streams, threads and synchronization primitives, and advanced RTTI features. The GraphicsKit provides a nice set of graphics classes for working with both image and vector graphics, and has built in support for the Anti-Grain Graphics library, as well as image loading services to facilitate loading various graphics formats. Finally, the ApplicationKit provides a rich set of GUI controls, use of the Model-View-Control pattern, property and component editors, undo/redo support, drag-and-drop, and clipboard services, application resources, and UI metrics and policy managers.

    To facilitate cross platform functionality the VCF is is built using a system of peer interfaces that abstract away the various platform specific calls, with each peer tackling a specific service, such as as threading, file handling, windowing system controls, and so forth. These peer classes are also exposed, and can be used to get access to the lower level OS handles or primitives that they wrap, allowing the developer to write platform specific code if the need arises.

    Finally, the VCF is flexible. While it is certainly designed to be a standalone application framework, it also aims, as much as possible, to cooperate with existing toolkits and/or frameworks. For example, if you have an MFC application, you can easily use just the GraphicsKit to make use of the more advanced features in it, as opposed to using the MFC CDC, CBrush, and CPen drawing classes.


    -Adam
  6. Re:What am I missing? by TioHoltzman · · Score: 5, Informative

    In addition to the GUI stuff the VCF provides:

    • Thread support with Mutexts, Conditions, and Semaphores
    • File and file searching
    • Streams
    • Locale and Unicode support
    • Text codes
    • String messages for localizing your app
    • Registry wrapper for app prefs
    • A full fledged reflection API that is conceptually similar to the Java Reflection API. This allows for dynamically creating an object instance from only a class name, interrogating the instance for methods, properties, events, and interfances. The overhead for this is pretty minimal. You do have to register the class but this is pretty easy to do and doesn't require a separate pre-processor step like Qt's MOC does.
    • A event system that is very similar to delegates in .NET and extremely easy to use.
    • Simple XML parsing support
    All of this is plus, unlike Qt or WxWidgets, or FOX or whatever, the framework is broken into smaller pieces as opposed to one monolithic library. All of the above features are available in the FoundationKit and completely suitable for console/server developement, without any GUI baggage.

    Application scripting can be achieved by using the VCF's Reflection API's to wrap a script engine. For example, in one app I wrote I used the Mozilla JavaScript engine and made a VCF wrapper that simply hooked into the VCF's ClassRegistry. Thus any class that you registered with the VCF's runtime was also available for scripting with the JavaScript engine. Took about 200 lines of code. From what I have seen I would expect a Python wrapper to be equally easy to write.

  7. Documentation by e8johan · · Score: 3, Informative

    I believe that one part of Qt's success is the great documentation. This: http://vcf.sourceforge.net/docs/ref_manual/ch03s04 .html does not look like great docs to me (the page has only titles, no text).

  8. Re:Missing a couple things? by EvilIdler · · Score: 2, Informative

    wxWidgets has all those things Qt has, too.
    (wxwidgets.org)

  9. Re:What am I missing? by ndogg · · Score: 3, Informative

    Just to clear something up:
    So Qt can currently use native (or pseudo-native, in the OS X case)

    Pseudo-native? It is native. Emulating it would be too cumbersome.

    --
    // file: mice.h
    #include "frickin_lasers.h"
  10. Re:What am I missing? by Anonymous Coward · · Score: 1, Informative
    All of this is plus, unlike Qt or WxWidgets, or FOX or whatever, the framework is broken into smaller pieces as opposed to one monolithic library. All of the above features are available in the FoundationKit and completely suitable for console/server developement, without any GUI baggage.

    this is just plain wrong, I've been using wxWidgets for a project I've been working on and it has many of those things and it is availible in many discreet modules, not simply a "monolithic library"

  11. Re:What am I missing? by TioHoltzman · · Score: 2, Informative

    To the best of my knowledge, Qt is the only other C++ framework out there that offers the range of runtime dynamic introspection that the VCF does. The VCF (and Qt as well) allows you to get all sorts of meta information about a particular C++ instance, such as the class name, class UUID, interfaces implemented by the instance, methods of the instance, properties, and events. Methods can be invoked dynamically at runtime, and properties can be queried or modified as well.

    By allowing for all of this the VCF gives you the potential to build a full fledged set of components on top of this, just like Borland's Delphi or Java (or Cocoa for that matter), with support for ComponentEditors and PropertyEditors. Because all of this can be queried at runtime, you can build a really kickass GUI builder, again just like Delphi or Cocoa's InterfaceBuilder. Qt can also support this (though they do it a bit differently I believe, but it's pretty close). WxWidgets, FOX, GTK, et al, don't have the features built in to really support anything like this. QTK has a sort of OO like property system but it's extremely hacky and cumbersome to use (IMHO). Qt and the VCF, make this easier because of C++.

    Whereas Qt requires a separate preprocessor step, the MOC tool, a developer using the VCF is able to supply this information all in regular C++ and through the usage of macros (icky, but hey, life's not perfect).

    Here's some more info on the reflection API's in the VCF:
    RTTI docs