After trying to maintain a wxWidgets project about a year ago, I'm afraid I must disagree. It wraps native controls, but it is a horrible broken framework. Among other things,
- It uses macros instead of C++ templates in order to support ancient compilers.
- To handle events, you're supposed to make an enum for your controls and go through these EVENT_TABLE macros - it works, but generally it's a mess compared to nicer frameworks like Qt.
- Then and probably still today, OS X Retina support was completely broken. Not a great turnaround time - it was already a year after the release of Retina laptops.
wxWidgets looks like a reimplementation of MFC almost. This might be good for some people or bad for others. MFC is/was the Microsoft Foundation Classes, an OO framework for doing GUI development on Windows that dates back to 1992.
I'm guessing that when wxWidgets was originally written (also 1992!), the author(s) thought it would ease the transition from writing Windows-only apps to cross-platform apps. wxWidgets has a very similar class hierarchy and uses the same preprocessor techniques.
Not that knowing any of that background makes it any more pleasant to work with.
Well, it has its drawbacks, but if native controls are a requirement, what alternative cross-platform good enough frameworks do we have?
Agree about your points, except you can Connect (dynamically) event handlers as in Qt's connect. From wx 3.0 you can actually Bind any function (i.e. it is not necessary to derive from wxEvtHandler). I always preferred this to Qt's blind, non-cpp, runtime evaluated connect's. At least you get a compiler error when it is not possible to connect.
- It uses macros instead of C++ templates in order to support ancient compilers.
- To handle events, you're supposed to make an enum for your controls and go through these EVENT_TABLE macros - it works, but generally it's a mess compared to nicer frameworks like Qt.
- Threading support is really lame, e.g. this quirk of AddPendingEvent: http://docs.wxwidgets.org/trunk/classwx_evt_handler.html#a07...
- Then and probably still today, OS X Retina support was completely broken. Not a great turnaround time - it was already a year after the release of Retina laptops.