Mastering Qt 5 - First Edition (December 2016)
Guillaume Lazar and Robin Penea are software engineers living near Paris in France. They founded NeuronalMotion together in 2014 to implement their vision of entrepreneurship and project development. They aim to achieve a self-organized company.
We aim to teach the reader to be proficient with Qt mechanisms to resolve real world problems. We put a strong focus on the latest version of C++14 to see how it can fit with a well designed Qt 5 application.
Here is a summary of the covered topics:
- Create stunning UIs with Qt Widget and Qt Quick
- Develop powerful, cross-platform applications with the Qt framework
- Design GUIs with the Qt Designer and build a library in it for UI preview
- Handle user interaction with the Qt signal/slot mechanism in C++
- Prepare a cross-platform project to host a third-party library
- Build a Qt application using the OpenCV API
- Use the Qt Animation framework to display stunning effects
- Deploy mobile apps with Qt and embedded platforms
- All the code in this book can be compiled and run from Qt Creator using Qt 5.7. You can do it from your preferred OS: Windows, Linux, or Mac OS.
- About the mobile-specific chapters, either an Android or an iOS device works, but it is not mandatory (the simulator/emulator can be enough).
- Chapter 6, Even Qt deserves a slice of Raspberry Pi, offers to build an application running on a Raspberry Pi. Although it is more fun if we can do it with a real Raspberry Pi, it is not necessary to have one to complete the chapter.
Official Packt errata page is https://www.packtpub.com/books/content/support/25651
- Add charts in .pro file, page 49/54/58 (paper book)
- Your QT module import should be "QT += core gui charts"
- Check the file ch02-sysinfo.pro
- The MainWindow must define a QHBoxLayout
- CpuWidget typo, page 63 (paper book)
- "we have to include the Q_OBJECT macro to allow CpuWidget" (not CPUWidget)
- Run the application too soon, page 65 (paper book)
- "If you run the pplication, you should see something like this", in fact you can't run the application at this step because CpuWidget::updateSeries() is a pure virual function and we implement the body function at the page 66!
- Page 46, there is a typo the Windows structure name, is is
- Page 47, in the second bullet point, the sentence should be "The second one is retrieved when the
cpuRawData()function is called
- Cache issue in PictureImageProvider::pictureFromCache(), page 189 (paper book)
- Replace "mPicturesCache.contains(pictureSize)" by "mPicturesCache.contains(key)"
- Replace "mPicturesCache[pictureSize]" by "mPicturesCache[key]"
- Check the updated file PictureImageProvider.cpp
- Qt3D API instability
- Due to some changes of the Qt3D module from Qt 5.7, the code has been updated and tested for Qt 5.10.1
- Check this commit
- Executing your tests
- Page 435 (ebook) or page 444 (paperbook),The correct include is: #include "testjsonserializer.moc"
Chapter 1, Get Your Qt Feet Wet
Lays the fundamentals of Qt and refreshes your memory with a todo application. This chapter covers the Qt project structure, how to use the designer, basic principles of the signals and slots mechanism, and introduces new features of C++14.
Chapter 2, Discovering QMake Secrets
Takes a deep dive in the heart of the Qt compilation system: qmake. This chapter will help you understand how it works, how to use it, and how you can structure a Qt application with platform-specific code by designing a system monitoring application.
Chapter 3, Dividing Your Project and Ruling Your Code
Analyzes the Qt model/view architecture and how a project can be organized by developing a custom library with the core logic of the application. The project example is a persistent gallery application.
Chapter 4, Conquering the Desktop UI
Studies the UI perspective of the model/view architecture with a Qt Widget application relying on the library completed in the previous chapter.
Chapter 5, Dominating the Mobile UI
Adds the missing part of the gallery application with the mobile version (Android and iOS); the chapter covers it with the use of QML, Qt Quick controls, and QML / C++ interactions.
Chapter 6, Even Qt Deserves a Slice of Raspberry Pi
Continues to the road on Qt Quick application with the Qt 3D perspective. This chapter covers how to build a 3D snake game targeted at the Raspberry Pi.
Chapter 7, Third-Party Libraries Without a Headache
Covers how a third-party library can be integrated in a Qt project. OpenCV will be integrated with an image filter application that also provides a custom QDesigner plugin.
Chapter 8, Animations, It’s Alive, Alive!
Extends the image filter application by adding animations and the ability to distribute a custom SDK to let other developers add their own filters.
Chapter 9, Keeping Your Sanity with Multithreading
Investigates the multithreading facilities provided by Qt by building a multithreaded Mandelbrot fractal drawing application.
Chapter 10, Need IPC? Get Your Minions to Work
Broadens the Mandelbrot fractal application by moving the calculation to other processes and managing the communication using sockets.
Chapter 11, Having Fun with Serialization
Covers multiple serialization formats (JSON, XML, and binary) inside a drum machine application in which you can record and load sound loops.
Chapter 12, You Shall (Not) Pass with QTest
Adds tests to the drum machine application and studies how the Qt Test frameworks can be used to make unit tests, benchmarking, and GUI events simulation.
Chapter 13, All Packed and Ready to Deploy
Gives insights into how to package an application on all desktop OSes (Windows, Linux, and Mac OS) and mobile platforms (Android and iOS).
Chapter 14, Qt Hat Tips and Tricks
Gathers some tips and tricks to develop with Qt with pleasure. It shows how to manage sessions in Qt Creator, useful Qt Creator keyboard shortcuts, how you can customize the logging, save it to disk, and much more.
Other Qt books of the same publisher
Suggestions and Feedback
Click here if you have any feedback or suggestions.