Solved Getting Started, A Bit Overwhelmed. Help?
-
Hi, I'm a very experienced C++ software engineer but have never used Qt before. I'm interested in using it to create a fairly typical cross-platform UI that can run on Windows, Mac OS and Linux X11 desktops.
By "fairly simple" I mean a typical application window with some controls (buttons, some text, etc) and some simple drawing of a two dimensional audio waveform. Nothing fancy, nothing for mobile or embedded platforms - just fairly typical UI code for an audio analysis application I already have a backend written for in C++.
My approach is to first get it built in Windows (I have Windows 10 and Visual Studio 2017) and then build the same code/UI on Ubuntu and macOS.
I have been overwhelmed with the amount of setup and the many gigbytes of binaries that come with the Qt setup/installs I've done so far. I first used the online installer to install Qt 5.9 which ended up installing many, many GBs of binaries on my dev machine. Am I correct to think I don't need the vast majority of these features? I'd prefer not to have to do this same installation and use up the same amount of disk space on all of my build servers.
Not crazy with the size of the install, I looked into this guide - building Qt 5 from Git hoping I could build a small subset of features - only what I needed. So, cloned the Qt repo, installed Perl, Python and Ruby, successfully ran the configure script and am currently building it for the last hour-plus and it's currently up to 9.7 GB of disk space and growing.
I feel like I (hopefully) only need a very small part of what Qt 5 offers. Maybe just QtBase? But every 'beginners guide" has me pulling down many, many GBs of code and/or binaries and running what seems to be fairly intensive startup steps.
Can someone possibly point me towards instructions of a "lightweight" Qt setup for minimal desktop platforms only, with no whistles and bells?
Thanks in advance,
Terence -
Hi!
I first used the online installer to install Qt 5.9 which ended up installing many, many GBs of binaries
Could you please run the maintenance tool and post a screenshot so that we can see which components you've installed? Sounds like you've installed much more than you'll actually need.
-
Hi
Did you just install Qt for your Visual Studio 2017 ?
Sounds like you took all platforms.I have source code and all optional modules + Creator IDE and its
-
Thanks, guys. Yes, you are correct, I've got everything under Qt 5.9.2 selected. Okay, so I'll change this so just "msvc2017 64-bit" is installed. After I do that, is there any quick start guide to simply building a "hello world" UI type application in Visual Studio 2017?
-
Hi
Super
If you plan on using VS IDe, you should find the plugin.
http://blog.qt.io/blog/2017/08/03/qt-visual-studio-tools-version-2-1-2-beta/
https://download.qt.io/official_releases/vsaddin/It allows for using the Designer part. ( draw the ui) and runs a tool called
moc for you. ( it scans .h files to allow signal & slots to work)You could use Creator IDE to start with and watch some of the many videos on youtube.
Then switch to VS IDE. Sorry I didnt see any get going videos for Visual Studio.
People often start with mingw + Creator and most i have seen have been for that combi.
Note, that you can just use the visual compiler from Creator.Are you used to GUI programming / event driven?
-
@mrjj said in Getting Started, A Bit Overwhelmed. Help?:
Hi
Super
If you plan on using VS IDe, you should find the plugin.
http://blog.qt.io/blog/2017/08/03/qt-visual-studio-tools-version-2-1-2-beta/
https://download.qt.io/official_releases/vsaddin/It allows for using the Designer part. ( draw the ui) and runs a tool called
moc for you. ( it scans .h files to allow signal & slots to work)You could use Creator IDE to start with and watch some of the many videos on youtube.
Then switch to VS IDE. Sorry I didnt see any get going videos for Visual Studio.
People often start with mingw + Creator and most i have seen have been for that combi.
Note, that you can just use the visual compiler from Creator.Are you used to GUI programming / event driven?
@mrjj Thanks for the info. Yes, I've done A LOT of Windows MFC and Win32 API UI programming in the past. I've done various X11 here and there over the course of years and also played around a bit on Mac OS with Objective-C and making some basic UI's.
As briefly mentioned before, my goal is to hopefully be able to use Qt to build a UI for a command line audio analysis application I've recently created that currently builds/runs on Windows, mac OS and various Linux distros. My build process makes extensive use of CMake and GitHub and is highly automated. I'm hoping that I can incorporate Qt into this build process without jumping through too many hoops.
I appreciate your quick replies and eagerness to help. Thank you.
Terence
-
@TerenceD
Ok, super.
Coming from MFC, the subclass to override virtual function should feel normal.
The event system however, its called signal & slots and it differnt so good start to place.
(and ask here)
http://doc.qt.io/qt-5/signalsandslots.html
The main difference from say raw winapi where you have a message pump and Qt is that
the dispatching is more local. You connect the Clicked() of a button directly to
a slot ( other name for normal function) and Qt events loop will send the signal to
your code.You will also be interested in QProcess if the GUI should run the command line.
http://doc.qt.io/qt-5/qprocess.htmlIf you need to draw graphs, then QWT or QCustomPlot is pretty nice.
http://qwt.sourceforge.net/Qt offers many classes but a QMainwindow and some QDialogs can get you far.
You can always ask here, stating the goal / features wanted and we can guide you in what classes to use.
There is a good basic set of Widgets and its easy to make customs ones.Qt is just another library so once the linking is in place ( with the Qt support dlls) it should work as you are used to.
-
@mrjj Awesome! Yes, I've read some already about signals and slots. Also, I don't plan to make it run the command line, but instead link to my backend library - the same library the command line application currently uses. I'm sure this should be doable without too much difficulty.
Really appreciate the additional information and links, mrjj. This is the best forum experience I've had in some time!
-
@TerenceD
Oh yes, a library is of course much better :)
Note on the GUI design part. You can draw the gui ( and c++ code is generated for you)
or you can hand make it if you want. (or mix it)For a intro ( older Qt but still very valid), this book is ok
https://tfetimes.com/wp-content/uploads/2015/09/c-gui-programming-with-qt-4-2ndedition.pdfIm glad to hear. Feel free to come back and ask if doubts.
Also note Qt comes with a tons of sample in the folder. -
@mrjj Okay, great! Thanks again!
-
@TerenceD
I think the best way to learn Qt is to begin with the examples which comes with Qt.
And here is some good example snippets for beginners.
http://www.java2s.com/Code/Cpp/Qt/CatalogQt.htm