tags:

views:

1026

answers:

5
+9  Q: 

wxWidgets vs QT

Just like in the tile? If You have any experience with both frameworks give me an advice which one use and why (C++ programming)

thanks for help

+5  A: 

Qt 4, because as far as I know there is no qtdemo clone made with wxWidgets. Install Qt 4, run qtdemo, and see for yourself.

Anyway, Qt is backed by nokia, has a clean syntax, available under lgpl license. It is flexible/powerful. It is hard to wish for more. The price to pay is relatively small: C++ language extension and an additional code prerprocessor.

wxWidgets is developed by "someone" and has a pretty messy syntax (probably matter of taste, but...).

I have developed several custom apps in Qt, and it feels very natural. I've been considering some other toolkit in the past, but I decided to avoid wxWidgets, because syntax didn't feel "natural"/intuitive, code (even in tutorial) looked too messy. Some software uses wxWidgets, but I have no reason to use it instead of Qt.

Anyway... The truth is that you should use whatever is required to complete your project. If project depends on wxWidgets, use wxWidgets. If you're starting something from scratch, Qt is the way to go.

SigTerm
+5  A: 

I have experience with wxWidgets but not Qt. They are both cross-platform GUI widget libraries that do a great job. Even though wxWidgets is an open source project, it does have a big following. There is plenty of documentation and a book on it. The book is great for getting up to speed. You don't mention the type of project you want to do. I've used wxWidgets for tools and larger applications. If you go to the wxWidgets web site, you can see some of the programs build with wxWidgets. There are some impressive programs. One of the applications is Audacity. That's a very popular audio tool. I think a drawback of using either library is that you won't necessarily have support for the latest and greatest GUI features. I don't think wxWidgets has support for some of the latest Win 7 GUI features. But, if you are aiming for a cross-platform solution, you wouldn't want those types of features anyway since they wouldn't port to the other platforms.

Sorry I can't compare and contrast against Qt, but I hope that gives you a better understanding of wxWidgets. Good luck!

zooropa
+13  A: 

I've had experience with both but more with Qt than wxWidgets.

The problems with wxWidgets is that it tries to be more like MFC than Qt. wxWidgets was made to help users that was using MFC to migrate easier to an better less buggy gui framework. So what wxWidgets made actually inherited a lot of the bad things MFC had. And what you got was wxWidgets.

wxWidgets still believes in making the framework work on 95,98, 2000, etc. They still offer a ansi and a unicode choices. Which i believe is stupid because no one imho still lives in a world that only flows around ansi. It should be unicode and only unicode.

The building of wxWidgets is just complicated at most. You have to edit some god forsaken header file to enable features and even that it is badly documented and overwhelming.

Most classes lack functionality. No proxy support in the socket library, not many notifications and if you have to, more than likely have to do it yourself (awful in my book).

You still have to manage enums for what is what. Like IDL_ITEMVIEW as you would in win32 api and MFC.

The documentation is not as good, It's hard to follow anywhere in it.

The design is based on devcpp which was a horrible IDE and never maintained at all. While it does fix it up some it still lacks anything worth using of it. It also inherited the bad things like no code completion, bad debugger, ugly editor. But it did add a good designer for wxWidgets. But afaik no linux support or Mac.

The good points of wxWidget is that it works on every platform, and if you are using MFC and like the message maps and still need to support old OS's like I said above go for wxWidgets.

Qt went it's own way and never went the same direction of MFC, as it was started way before MFC existed (afaik) and didn't work on Windows at the time it was Linux only. Qt uses a thing called MOC (Meta Object Compiler) don't think of Qt as it's own language, everything is still done in C++. MOC was designed for reflection. To know what class it is, get the number of functions in the class and what not. Qt invented the signal and slot system you see in Boost and GTK. Qt is what you call event based gui framework.

When a user clicks a button it'd send a message (signal) and whatever slot was connected to the signal would get that event and respond however to it. It is type safe, you don't have to worry about it messing up. It will just not call the invalid slot and will report the error letting you know.

Qt has an Designer application which is just like wxWidgets in devcpp. But allows you to create signals in it, wide range of widgets to use. You can even make a widget plugin and put your own widgets in to designer and drag them on to the form and see it in real time. You can see the code it generates (via MOC) and spits out 100% valid C++. wxWidgets doesn't do this. I cannot remember how it handles their design uis. When previewing the design you can change the look and all its styles to see how it would come out and make changes depending on how you see it best fit.

Qt has other applications also, a translator application for translating your apps. Qt-Creator the IDE for Qt. Which supports code completion, svn, git, cvs (I think), and others. It has Designer built in. So you can work in the IDE alone and what not.

Qt ships with a lot of modules in it. Ranging from SQL, Network, XML, XSLT/XPath, to WebKit. Even COM support (which only runs on Windows). with QtActive, you can make Qt plugins for IE if you want. There is also QtScript, which allows you to add scripting to your application via Javascript if you would like to have it. Even has a debugger IDE for it.

Qt's code is very consistent in coding and design. It has it's own build system called QMake. It works on Mac, Unix, Linux, Windows. I haven't really used it except for testcases. I use CMake which is imho much better.

Configuring Qt is done command line similar to autotools configure. Most of Qt modules can be disabled as fit.

Qt has a lot of books on it. And very updated unlike wxWidgets book which was last written in a very old version of wxWidgets.

There is also another application that comes with Qt. It is called Qt Demo, which also you run all the examples and demo application that demonstrates what Qt can do. There is like over 100 of them (estimating). It's fully documented and real easy to follow.

If you read comments from other people that complain about MOC and how bad it is. I wouldn't listen to them. Just think of MOC as this. If you use QtScript module. You can easily base data back and forward with no complexity unlike you would have to do if you was to a normal C++ application with Boost::Python for example. Take a look at KDE4's Kross library. A lot of that work is done by what MOC can do.

Qt was made by Trolltech and then got sold to Nokia for more support on mobile phones, even works in car embedded systems. I don't think wxWidgets can even do that but I can be wrong. By Qt being bought by a heavy company like Nokia you know it will probably never die as the demands for Qt on phones and embedded are becoming more in demand. With wxWidgets it's made by developers (I have nothing against). It would die without warning. If Nokia went under it would be given control to KDE. But that will never probably happen.

Qt is professional designed unlike wxWidgets. Nokia even opened up its repo to allow users to push features to it and help with it. So Qt is professional and community driven.

Zeke
+1 for Qt: it has great documentation and helpful tools like an integrated help viewer and a UI designer.
rubenvb
"no linux support or Mac" What...? Where did you get that from?
George Edison
A: 

I'm a developer for the PureCM source control tool and almost all of our code is written using wxWidgets. The formal documentation has been very poor with wxWidgets in the past but I think is getting better. At the end of day the best documentation is to look at the code itself and if you google around you will find a large community. wxWidgets can be quite difficult to setup initially, but PureCM is just one example of large professional tools written using wxWidgets. So you know it is scalable.

When I first started using wxWidgets 8 years ago the Linux implementation was flaky and the Mac port was a joke. I would say the Linux port is now on par with Windows but the Mac port is still some way off. They have a major release in the next 3-6 months switching to Cocoa - so we are eager to see what the 3.0 release will be like for the Mac.

One of the main reasons we went with wxWidgets was because of size. wxWidgets may be difficult to setup but you can specify exactly what you do and don't want to include. So the included source code is tiny. When we were looking at QT this was not the case.

Stephen Wortington
A: 

One answer goes some way to point out that wxDev-C++ is not as good as QT Develop. The reality however is that wxWdigets is supported by wxSmith, wxDev-C++, DialogBlocks, wxDesigner, wxFormbuilder, VisualWx and wxForms. I personally use wxFormbuilder, and I find it much better than Qt Designer. I do realise that the GUI designer is not the begin all and end all of a toolkit, but wxFormbuilder certainly makes editing forms a lot easier that Qt Designer does.

Armand