Qt Designer/Creator/Design Studio - Which Should I Use?
-
I have been working on an (VB) application in VS that I want to port to at least 5 platforms: Windows, MacOS, Linux, iOS and Android. Blackberry would be a nice add. It has an editable textbox that is used for both input/output. It has a non-editable textbox that is used to display feedback and help. Both are scrollable. It has many labels and almost 100 buttons that are color-coded to categorize them into about 20 related groups. There is a trackbar, scrollbars, and other input boxes. Some buttons should launch additional forms which would also contain many controls. The background colors of many types of controls need to be changed while the app is running. I would like to market my app, but don't yet know if the revenue would be sufficient to justify buying a Qt commercial license. I have QT Community Edition installed, but installing the Educational License is also an option.
- Which of the three Qt apps in my subject line should I use to create the UI?
- Are there any caveats for the UI design that I need to consider to be able to port my UI to iOS and Android?
- Under the GPL/LGPL, do the classes that I develop for this app that are not related to my use of Qt remain my private intellectual property?
- If I opt to get Qt under the Educational License to try out the additional features, can I still market my app if developed entirely using the Qt Community Edition?
- What makes Qt a better choice for my project than C# MAUI or Embarcadero?
Thanks! I am just getting started with Qt and a bit overwhelmed with everything. Any help is greatly appreciated.
-
Hi and welcome @sburtchin ,
- Which of the three Qt apps in my subject line should I use to create the UI?
What apps? The ones you mention in the title?
Quick explanation:
-
Qt Designer (the standalone version):
- only to "design" UI files. User Interface compiler will generate a C++ header to actually use it in your app. Not needed at all, but recommended for beginners.
-
QtCreator (IDE + integrated Designer):
- common IDE to use with the Qt Framework. Probably best Qt support. The Designer can be used, but doesn't need to.
-
Qt Design Studio:
- powerful UI Design Tool to develop QML / 3D apps, not really used for Qt Widget apps
- definitely worth giving a try when going for QML
-
MS Visual Studio + Qt VS Tools plugin
- Since the choice of an IDE is a matter of taste and if you like VS, you don't need to code in QtCreator. Visual Studio with the Qt plugin installed also provide a great Qt experience
So in conclusion, to "design" your QtWidgets UI, QtDesigner would be enough (if needed at all), but you need an additional IDE.
If you have MS Visual Studio installed and like to continue to develop your app with it, use the Qt plugin for MS VS.QtCreator is kinda the best of both worlds. You can't do wrong with QtCreator :)
As a beginner, to develop my Qt app, I would pick this.Qt Design Studio is probably not what you are looking for (assuming you plan to go for a QtWidgets app).
- Are there any caveats for the UI design that I need to consider to be able to port my UI to iOS and Android?
Code-wise not, since Qt is 99.99% cross-platform. There are some things in some Qt modules which might not work the same on every platform, but in general you don't need to change anything and your code will run on multiple systems / different platforms.
UI-design-wise maybe... but depends on you app. Some stuff that looks good on Desktop, might not look or work the same on mobile platforms (in terms of UX).
Sometimes a little tweak is needed.- Under the GPL/LGPL, do the classes that I develop for this app that are not related to my use of Qt remain my private intellectual property?
Even classes you develop related to Qt are your private property. You don't need to publish your source code.
One thing you must do, you must provide a possibility for any user of your software to replace the linked Qt version with one of their choice.
Also, AFAIK, any changes you made to the Qt version used in your program must be public.
Note: As is so often the case with these kinds of questions, I am not a lawyer, so I can't give you "bulletproof" legal advices. Contact a lawyer if you want to be sure :)- If I opt to get Qt under the Educational License to try out the additional features, can I still market my app if developed entirely using the Qt Community Edition?
AFAIK the Edu license includes some commercial features "for free" and solely for an educational purpose. So you can't use these features in your released app.
Use the Community license to develop your app or buy a commercial license.
You are not allowed to mix them. It's either...or...- What makes Qt a better choice for my project than C# MAUI or Embarcadero?
My opinion:
More supported plaforms, Qt provides great Desktop as well as mobile platform support (Linux, Windows, Android, iOS, etc.)
Probably faster.
Good amount of modules and features
C++ over C# ;-)
Also depends on use case... there might be use cases where one beats the other or where you can't compare them at all...Edit:
You did not mention whether Qt Widgets or QML and I assumed QtWidgets. So after reading your post, having a look at QML, Qt's declarative language for UI design, might not be a bad idea.
It seems that your app (mobile + desktop) should be more design focused?!
If so, Qt Design Studio is also worth trying. As I've said above, it's the more powerful, QML/2D/3D orientated version of Qt Designer, with lots of features and Adobe integration
(Haven't used QtDesign Studio myself that much, actually) -
Thanks for a really detailed response.
You guessed right, "development environments" would have been a better choice of words.VS was the IDE used for my courses in C# and VB. My app has about 30,000 lines of code devoted to string processing. As I add functionality, I frequently see the need to tweak identifier names. VS does a great job of renaming identifiers. I think that was the issue that led me to give up on Embarcadero. In one of the Qt Academy courses I noticed some pretty impressive features for navigating the Qt source code. Would Qt Creator provide a considerable advantage over VS in this regard? Does Qt Creator also provide a good solution-wide ability to rename identifiers?
I will contact a lawyer to be sure, but are you saying that I only need to publish my object code, even for the header files? Some class headers I would definitely not want to share.
Speed is important. Some operations take over 10 seconds with the VB code on my Intel Xeon. I suspect too much reliance on .NET. I don't know what widgets are included with C# MAUI. You did not mention how QT is better than Embarcadero?
I assumed that I would have to use widgets to get all the required UI functionality mentioned in my first post. Is this also possible using QML without a massive amount of additional coding?
-
@sburtchin said in Qt Designer/Creator/Design Studio - Which Should I Use?:
In one of the Qt Academy courses I noticed some pretty impressive features for navigating the Qt source code. Would Qt Creator provide a considerable advantage over VS in this regard?
Easier to setup.
QtCreator was made for and built with Qt.
Installing the Qt source files to debug and step into the Qt code is easier (in my opinion).
But with Visual Studio this also works when setting up the.pdb
/ Debug Symbols files.Does Qt Creator also provide a good solution-wide ability to rename identifiers?
QtCreator provides every "standard" functionality you would expect from a modern IDE, which also includes refactoring (renaming, searching, auto-gen getters/setters etc.).
QtCreator is actually a solid IDE overall.are you saying that I only need to publish my object code, even for the header files? Some class headers I would definitely not want to share.
If I'm not mistaken, you don't need to share any code. You can ship your app binary (with the possibility for your "customers" to dynamically link a Qt version of their choice, so no static linking with Qt for your app)
Again, read (L)GPL yourself, ask a laywer and maybe check these topics here:- https://forum.qt.io/topic/84051/distribution-with-lgpl
- https://forum.qt.io/topic/60205/obligations-of-the-lgpl
There are more topics dealing with this, use the Forum Search.
Speed is important. Some operations take over 10 seconds with the VB code on my Intel Xeon
I can't think of any Qt GUI operation which would take even close to 10s, unless you are doing something wrong/stupid (block signals/event loops etc.)
As I've said above in my first post, in many cases you don't even need much more than just Qt for your application, since there are so many modules for almost any use case.
For costly operations, you could use theQtConcurrent
or theQt Threading
classesYou did not mention how QT is better than Embarcadero?
Can't tell. Never used it.
Is this also possible using QML without a massive amount of additional coding?
Here's an overview with all QML classes
I'm not the one to ask when it comes to QML, but usually QML is less "coding", in the sense of writing "code".
You still have to "define" and configure your QML objects, write properties and connect signals to itSee this Button class, for example:
I would recommend you to just try everything, play and test around to see if it works out for your or not.
You might want to have a look at the Qt Widgets and QML examples: -
Thanks for all the great information! I worked out the main input/output box last night in Designer and it went very smoothly even in comparison to the .NET widgets with just a groupbox, an edit box and 7 labels. The background color needs to change to indicate context. With .NET I had to add additional labels to patch the background and change this for every widget. With Qt I only will have to change the background for two widgets. With Embarcadero the UI design did not go well.
I can't think of any Qt GUI operation which would take even close to 10s
The GUI part of the operation is instantaneous from my perspective. In the background it is checking literally trillions of possibilities for the best fit. The button comes with a warning for users who don't have really fast computers.
-
@sburtchin said in Qt Designer/Creator/Design Studio - Which Should I Use?:
The background color needs to change to indicate context. With .NET I had to add additional labels to patch the background and change this for every widget. With Qt I only will have to change the background for two widgets.
This can be done using Qt stylesheet very easily
- https://doc.qt.io/qt-6/stylesheet.html
- https://doc.qt.io/qt-6/stylesheet-syntax.html
- https://doc.qt.io/qt-6/stylesheet-customizing.html
- https://doc.qt.io/qt-6/stylesheet-examples.html
In the background it is checking literally trillions of possibilities for the best fit. The button comes with a warning for users who don't have really fast computers.
that sounds like it could use some optimization.
Some reworks when porting to C++ / Qt :)
But definitely use Qt's Multithreading technologies, otherwise you will block the main GUI thread and make the window unresponsive. -
that sounds like it could use some optimization.
Some reworks when porting to C++ / Qt :)
But definitely use Qt's Multithreading technologies, otherwise you will block the main GUI thread and make the window unresponsive.The algorithm has parameters that can be tweaked, and there are also different levels of precision that can be attained (another parameter). So 100 times less precise gets completed in approximately 0.1 seconds, however, still a problem on a slow computer, or with a user not anticipating the wait. I haven't used multithreading, but that sounds like the perfect solution. I can disable the 'request' button until the spawned thread completes.
I just completed my C++ course. A different algorithm using C++ might be 1000 times faster. I am already anticipating that in the translation there is much that can be improved upon overall in the way of performance. My app is heavy on string processing. All of those calls to .NET and making copies of strings in the VB code have to be costly.
Thanks for those extra links. My app uses a lot of color.
-