how is c++ a graphical user interface programming language, i mean how does all the code fit in to develop window based applications.

Recommended Answers

All 9 Replies

If you want to start GUI programming, I suggest you learn an API like win32. Win32 is going to be a good start for that, plus it looks good on a resume, kind've a standard thing I would think.

search for wxWidgets, QT, GTKmm

QT for ever

Biased mhhh?
Live long wxWidgets ;)

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.

Source

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.

Source

Nothing have changed much of the API to require a new book. After all very active wxForum plus very active google group, makes a book needless. Plus some good tutorial out there :)

May be a book will come out when version 3 is out!

I thought I would "debunk" some myths of QT addict :)

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

Thank you for telling us that, we will consider it in your arguments. I would also say I have never used QT. So I will not try to be QT expert here. But I have long time use 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.

I have not programed with MFC either and I know M$ sometimes complicates things, but I would love to know those "bad things". So far I haven't seen any :)

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.

So what? Is it not burden to developers and advantage to users? They are dropping that anyway. I would say it is "advantage" over QT, for It serves even old grandpa's machine.

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.

flexibility always goes with complexity. However, if you don't want customization (which is optional) just compile with defaults. I don't think the command below is that complex. After all they have heavy docs on that
mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release

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).

I don't know QT way here as he didn't say in it. But i have never used sockets yet, and I see a lot of threads on sockets but I'm yet to see someone complaining of the lack of this feature. But is it that much big deal, even if it misses? bear in mind there is no perfect framework under the sun

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

Manage? how?
May be someone can help me to understand this.

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

Man, which version are you talking about? see it yourself where wxDocs is going. I think it is enough for me, don't know for others.

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.

wxDevCpp is for windows only and well updated. I have never used thoug but I don't think it is that horrible. may be try yourself.
That said, there are decent IDE and RADs that are Xplatform. I use CodeLite and is very nice IDE. CL support wxFormbuilder RAD which is very good. Code::Blocks is another decent IDE, with its own RAD, wxSmith. Julian have coded commercial RAD/IDE DialogBlocks and Robert Roebling have wxDesigner. You can use VC++ with wxWidgets. man, what do you want more? I think it have more to do with QTaholic than wxWidgets bad things

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.

that is just one of good point. Not even "the" good point!

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.

I agree QT is great framework and agree on this quote

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.

same can be accomplished with wxWidgets Connect method

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.

You have wxFormbuilder, wxSmith, wxDevCpp designer, wxDesigner, DialogBlocks.
I don't understand what he means by valid C++, but I think if wx uses invalid C++, why does it even compile with Standard C++ compilers

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.

CodeLite (which I use) have support for SVN, code completion, wxFormbuilder which i think is enough. PoEdit is standard app for editing .po files and compiling to .mo files

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.

Much of stated things are there in wx. In addition, there are other components that are not part of core wxWidgets but you can get them on wxCode. they are individual well maintained but very good (although some are abandoned)

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.

So what? wx also have bakefile which works on all platforms. coding and design have been debate to death. Even so I would be happy to see the specific issues with wx design as I'm not design genius

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

bakefile allows you to use native tools (see their web). In wxWidgets you can disable some stuffs like openGL support et al.

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.

If one book can explain all needed to explain, what is the point of many books? If one framework needs many books to be understood that smells like complexity to me! The book covers all that need to be explained and I can't see major change to necessitates a new book. wx 3.0 have major changes that IMHO will need a book.

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.

So what? wx comes with samples tha you can tinkle with and compile and learn from them

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.

I don't have problem with complainers. if it does not click, check another thing. So you win here!

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.

Although haven't looked in deep, there is wxMobile API. Also concerning future, we are humans and no one know after Trolltech, Nokia, who is next. Trolltech didn't have LGPL, Nokia have it. Now this is positive change AFAICS, but who knows what next? The guy here assumes that no one in future will sponsor wxWidgets. Even so, behind "developers" are software companies like Anthemion Software, AG Concepts, TT Solutions Bitwise et al. Let us leave future thing to God!

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.

Professional in which sense? Looks like Ad hominem fallacy. Committing to Repo makes it professional? If that is what is reffered to, then wx is professional too. wx is also community driven

As you can see, I have nothing against Qt and I think the two are Jacob-and-Essau frameworks. but as I have pointed out, the post was very biased towards QT and the writer is QTaholic ;)

Note: I have no connections with wxWidgets official team other than being ardent user

Um, Never used QT, but wxWidgets is just a clone of Microsoft Foundation Classes, so dont use it, just use MFC if you were going to look at wxWidgets.

Um, Never used QT, but wxWidgets is just a clone of Microsoft Foundation Classes, so dont use it, just use MFC if you were going to look at wxWidgets.

Fact or fiction? I have never read it anywhere, neither in wikipedia nor in their website
Even if I grant that, MFC osn't wxReplacement you know, it is not Xplatform.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.