Should I learn Qt or WXWidgets?? And what is the best source for learning these platforms?
Should I learn Qt or WXWidgets?? And what is the best source for learning these platforms?
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.
<=== The Great Pumpkin says ===>
Please use CODE tags when posting source code so it is more readable. Click "Go Advanced" and then the "#" icon to insert the tags. Paste your code between them.
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.
Why "or" and not "and"?Should I learn Qt or WXWidgets??
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.
==========================signature=============== ==================
S.O.L.I.D principles (use them!):
https://en.wikipedia.org/wiki/SOLID_...iented_design)
Do you write clean code? - if you are TDD'ing then maybe, if not, your not writing clean code.
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.Why "or" and not "and"?
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.
<=== The Great Pumpkin says ===>
Please use CODE tags when posting source code so it is more readable. Click "Go Advanced" and then the "#" icon to insert the tags. Paste your code between them.
So, things that are difficult to learn should not be learned? because that is the subtext in your sentence there.Mainly because of the learning curve required to learn and remember the huge APIs for both kits.
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)
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.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.
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.
==========================signature=============== ==================
S.O.L.I.D principles (use them!):
https://en.wikipedia.org/wiki/SOLID_...iented_design)
Do you write clean code? - if you are TDD'ing then maybe, if not, your not writing clean code.
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.So, things that are difficult to learn should not be learned? because that is the subtext in your sentence there.
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.
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.If you only limit your self to learn one toolkit you'll never know if it is the best choice for your next project.
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.Not to mention that any professional developer should know more than just one toolkit.
Maybe it was free, but it does look impressive and you would not have passed if you didn't know your stuff."Nokia Certified"
<=== The Great Pumpkin says ===>
Please use CODE tags when posting source code so it is more readable. Click "Go Advanced" and then the "#" icon to insert the tags. Paste your code between them.
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). :-)
==========================signature=============== ==================
S.O.L.I.D principles (use them!):
https://en.wikipedia.org/wiki/SOLID_...iented_design)
Do you write clean code? - if you are TDD'ing then maybe, if not, your not writing clean code.
I use both. Try Qt first.
OK, so why? Is it easier to learn Qt first and then pick up wxWidgets? Some other reason?I use both. Try Qt first.
<=== The Great Pumpkin says ===>
Please use CODE tags when posting source code so it is more readable. Click "Go Advanced" and then the "#" icon to insert the tags. Paste your code between them.
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.
Qt works great on Linux and Mac OS X with native look.
Bookmarks