For a university project I'm more or less forced to use the wxWidgets toolkit to develop some application.
Having worked with this toolkit, I'm starting to realize that Qt wins on all aspects. Qt offers a logical API which does not require much lookups in the documentation. But if you need to do so, the documentation is there. And it is very complete.
The opposite with wxWidgets. The API is an inconsistent mess, and so is the documentation. A low amount of code examples, quite important remarks hidden in unimportant looking text and the method descriptions are very basic (say, trivial). The developer is constantly bothered with platform specific remarks, where I thought it was the toolkit's job to abstract from the differences between them.
Besides, they claim to be a C++ toolkit. But in fact it's a mixture of object oriented C++ flavored with a whole bunch of C like constructs. So call the resulting code C+ so you'll not get any wrong ideas.
For instance, it seems they've never heard of templates, they use macros to parametrize classes:
WX_DECLARE_OBJARRAY(MyFile, ArrayOfFiles);
...
#include <wx/arrimpl.cpp> // this is a magic incantation which must be done!
WX_DEFINE_OBJARRAY(ArrayOfFiles);
// that's all!
Note: the code comments were not made up by me, they're straight from the documentation.
Let's see the Qt way of defining such array:
typedef QList<MyFile> ArrayOfFiles
// that's all!
No "magic incantation" to see here. It's just one of the examples where coding in wxWidgets is more tiresome than in Qt.
Regarding event handling, Qt has the connect() call and granted, wxWidgets also has a similar call: Connect(). But in the elemental Hello World it is not recommended to use the Connect() call because certain IDEs only can handle event tables (and of course, the event tables are dirty C'ish macros).
Layouting your GUI, another horror story. Getting your widgets in the right place (and keeping it that way) is quite complicated. Also thanks to the lack of documentation in the docs, a few more code examples would've helped in fact. And if you think you got it right on one platform, don't think it will look the same on the other one. Widgets fall off dialogs or are not properly positioned in Windows, where in Linux it looks fine. So their portability claims do not reach further than "the same code compiles on more platforms" and that's it.
So I am a happy Qt user, and have given wxWidgets an honest try. Too bad wxWidgets is too messy to develop another project with it.