PDA

View Full Version : Qt or WXWidgets



lovesier
22nd March 2017, 09:54
Should I learn Qt or WXWidgets?? And what is the best source for learning these platforms?

d_stranz
22nd March 2017, 19:50
The Qt user community is huge, with many people active in supporting and maintaining Qt. There is a publicly-traded company responsible for overseeing the development and distribution of Qt. There are many books and other publications on Qt, as well as forums such as this one.

I do not know the size of the wxWidgets user community, but my sense is that it is a lot smaller than Qt's. The development appears to be a mostly volunteer effort.

So if you are looking to learn a cross-platform toolkit and hope to get a job programming with it, I think you would probably be better to learn Qt.

This is just my personal opinion and others may have different ideas.

vinncottel
4th April 2017, 07:56
I think Qt would be better. Because I use Qt exclusively for GUI applications. There are more reasons to do so.

Qt works great on Linux and Mac OS X with native look.

Qt Creator is a good IDE to design and develop Qt apps that works on all platforms.

Qt is now available for Android, iOS and Windows phone.

It is really easy to build and manage Qt projects, or integrate 3rd party API/Libraries like OpenGL, OpenCV, Boost, C4 or anything.

Qt extends C++ with MOC which is a great feature.

I love Qt's full featured documentation.

wxWidget is also great, but I never used them. I would suggest you to create a sample app both in wxWidget and Qt. Then you would be able to differentiate things.

high_flyer
4th April 2017, 12:27
Should I learn Qt or WXWidgets??
Why "or" and not "and"?

What are the requirements of your project that you want to implement?
On which hardware should it run?
What type of UI (if any) do you need?
Based on the answers to these (and further) questions, you can compare which of the frameworks give you the best match.
As the poster before me wrote, its a good idea to try both to get a feel for the difference.

d_stranz
14th April 2017, 00:09
Why "or" and not "and"?

Mainly because of the learning curve required to learn and remember the huge APIs for both kits. You can be a mediocre programmer in two similar (but different) toolkits, constantly having to pause to look up the name of a class or method, or be expert in one of them so the code flows freely because you have been able to commit to memory the things you use most often.

I agree with high_flyer and vincottel; try the same project with both and see which you like best. Or as I said, if your goal is to get a job which pays you to write code using one of them, then do some research and count the number of job postings which require the use of each one.

high_flyer
14th April 2017, 23:20
Mainly because of the learning curve required to learn and remember the huge APIs for both kits.
So, things that are difficult to learn should not be learned? because that is the subtext in your sentence there.
Also, its simply a matter of time.
I am sure you too are more than proficient in more than just one toolkit.
As time passes you can be expert on more than just one toolkit.
However, I was not talking about being an expert.
Learning a toolkit does not mean you have to be an expert, only that you can "find your way around" and know in general how it ticks, or enough for your to be able to do meaningful work with it.
This helps when you need to make a decision about using it or not to solve a particular problem.
If you only limit your self to learn one toolkit you'll never know if it is the best choice for your next project.
Not to mention that any professional developer should know more than just one toolkit (but we don't know if the OP is a professional developer, I have to admit)


You can be a mediocre programmer in two similar (but different) toolkits, constantly having to pause to look up the name of a class or method, or be expert in one of them so the code flows freely because you have been able to commit to memory the things you use most often.
I agree with the base line - you usually will tend to be better at a specific tool kit than another for all kinds of reasons.
But you always are better off if your are mediocre with the toolkits you are mediocre with than not knowing them at all.
I develop with Qt since Qt2.0, which is for me like 16 year by now.
I got my "Nokia Certified" simply because at one of the dev days there was an offer to do it for free, so I just went in and did it with 0 preparation.
Even after 16 years I still work very closely with the documentation, and I know there is so much I still don't know.
A real expert never parts from the documentation in my view.
So in my work I actually do "constantly pause and look up the name of a class or method" and I do consider my self to be an expert (and my employer too).
I probably consider my self an expert because I do this, not because I don't have to.

d_stranz
15th April 2017, 04:07
So, things that are difficult to learn should not be learned? because that is the subtext in your sentence there.

No, not what I mean at all. If you are just starting out (which I think the OP is) then you are more likely to become proficient in cross-platform GUI development if you stick to a primary language (C++ or Python, typically) and choose one toolkit on which to focus your learning. If you take a shotgun approach, you may find you know a little bit about a lot, but you don't really have competitive skills in your job or the market. It takes you a long time to write a program, and to be a good programmer, you need to be able get into a "zone" where the code just flows out. If you are being forced to stop, look something up, and then try to remember how you wanted to go forward, it will be harder to write good code and you will be slow at doing it.

It takes time to learn any new language or toolkit. Even though I have been developing using Qt for 10 years, I'm still learning. I don't know anything about QML beyond the basics. It would take a year to be fluent enough to write a program of any size. And Qt Assistant is always open on my desktop too, because I don't remember the exact syntax for every one of the 100 or so methods in QString or a lot of other classes.


If you only limit your self to learn one toolkit you'll never know if it is the best choice for your next project.

This is true. After almost 30 years of C++ programming, I have been surprised at how quickly I can prototype some complex things using Python, SciPy, NumPy, matplotlib, and some of the other tools in the Python universe. To do the same thing in C++ means either writing the code yourself or finding LPGL or commercial libraries, and then beating on them (or your code) until they all play well together. The Python world seems much more congenial. I am seriously considering using it as a platform for the next product, with C++ sitting in the passenger seat.


Not to mention that any professional developer should know more than just one toolkit.

Also true. In my case, before Qt it was 10 years of MFC in Windows, and before that 5 years in Motif and XWindows. Once you learn one GUI development toolkit, the next one is easier because in general the principles are the same, just a different API to remember. The same is true for programming languages - you can hand-write a parser in C / C++ or you can let lex and yacc or QRegularExpression do it for you.


"Nokia Certified"

Maybe it was free, but it does look impressive and you would not have passed if you didn't know your stuff.

high_flyer
16th April 2017, 21:53
Didn't mean to start a discussion really, was just my two cents.
I think we are on the same page - and it seems we have a similar history too (in terms of where we come form with toolkits). :-)

dustin007
20th August 2017, 10:28
I use both. Try Qt first.

d_stranz
20th August 2017, 20:13
I use both. Try Qt first.

OK, so why? Is it easier to learn Qt first and then pick up wxWidgets? Some other reason?

wysota
29th August 2017, 06:47
The question is tricky because Qt and wxWidgets are really on different layers of software development. Correct me if I'm wrong but wxWidgets is basically a toolkit that wraps functionality of other toolkit engines into its own APIs ("wxWidgets defines a common API across platforms, but uses the native graphical user interface (GUI) on each platform, so your program will take on the native look and feel that users are familiar with."). There is even a port of it that uses Qt as its backend.

Qt on the other hand is an application development framework and goes far beyond just being a toolkit.

Of course I may be biased but I'd say you should go for Qt because by using it you will be able to do so much more compared to wxWidgets.

kaufenpreis
18th September 2017, 13:30
Qt works great on Linux and Mac OS X with native look.