Mastering Qt 5 [2 ed.] 1788993896, 9781788993890, 9781788995399

An In-depth guide updated with the latest version of Qt 5.11 including new features such as Quick Controls and Qt Gamepa

386 106 4MB

English Pages 534 Year 2018

Report DMCA / Copyright

DOWNLOAD EPUB FILE

Table of contents :
1: Get Your Qt Feet Wet
Qt project basic structure
MainWindow structure
Qt Designer interface
Signals and slots
Custom QWidget
Adding a task
Using a QDialog
Distributing code responsibility
Emitting a custom signal using lambdas
Simplifying with the auto type and a range-based for loop
Summary

2: Discovering qmake Secrets
Designing a cross-platform project
Transforming SysInfo into a singleton
Exploring Qt Charts
CpuWidget using QCharts
Memory using Qcharts
The .pro file in depth
Under the hood of qmake
Beneath Q_OBJECT and signals/slots
Summary

3: Dividing Your Project and Ruling Your Code
Designing a maintainable project
Defining data classes
Storing your data in a database
Protecting your code with a smart pointer
Implementing the model
Summary

4: Conquering the Desktop UI
Creating a GUI linked to a core shared library
Listing your albums with AlbumListWidget
Creating ThumbnailProxyModel
Displaying the selected album with AlbumWidget
Enhancing thumbnails with PictureDelegate
Displaying a picture with PictureWidget
Composing your Gallery app
Summary

5: Dominating the Mobile UI
Starting with Qt Quick and QML
Checking your development environment
Creating a Qt Quick project
Preparing your Qt Quick gallery entry point
Displaying albums with ListView
Theming the application with a QML singleton
Loading a database on mobile devices
Creating a new album from a custom InputDialog
Loading images with an ImageProvider
Displaying thumbnails in GridView
Swiping through full resolution images
Summary

6: Even Qt Deserves a Slice of Raspberry Pi
Discovering Qt3D
Configuring Qt for your Raspberry Pi
Creating an entry point for your Qt3D code
Setting up the scene
Assembling your Qt3D entities
Preparing the board game
Crafting entities from the factory
Building a snake engine in JavaScript
Varying the HUD with QML states
Profiling your QML application
Summary

7: Third-Party Libraries without a Headache
Creating your Qt Designer plugin
Configuring the project for Windows
Configuring the project for Linux
Configuring the project for Mac
Implementing your OpenCV filters
Designing the UI with FilterWidget
Exposing your plugin to Qt Designer
Using your Qt Designer plugin
Building the image-filter application
Summary

8: Animations - Its Alive, Alive!
Creating an SDK using the Qt Plugin system
Creating your plugins
Loading your plugins dynamically
Using the plugins inside the application
Discovering the Animation Framework
Making your thumbnails jump
Fading in the picture
Flashing the thumbnail in a sequence
Summary

9: Keeping Your Sanity with Multithreading
Discovering QThread
Flying over Qt multithreading technologies
Architecting the Mandelbrot project
Defining a Job class with QRunnable
Using QThreadPool in MandelbrotCalculator
Displaying the fractal with MandelbrotWidget
Summary

10: Need IPC? Get Your Minions to Work
Inter-process communication techniques
Architecturing an IPC project
Laying down the foundations with an SDK
Working with QDataStream and QTcpSocket
Interacting with sockets in the worker
Interacting with sockets from the application
Building your own QTcpServer
Summary

11: Having Fun with Multimedia and Serialization
Architecting the drum machine project
Creating a drum track
Making your objects serializable with QVariant
Serializing objects in JSON format
Serializing objects in XML format
Serializing objects in binary format
Playing low-latency sounds with QSoundEffect
Triggering a QButton with your keyboard
Bringing PlaybackWorker to life
Accepting mouse drag-and-drop events
Summary

12: You Shall (Not) Pass with QTest
Discovering Qt Test
Executing your tests
Writing factorized tests with datasets
Benchmarking your code
Testing your GUI
Spying on your application with QSignalSpy
Summary

13: All Packed and Ready to Deploy
Packaging your application
Packaging for Windows
Packaging for Linux with a distribution package
Packaging for Linux with AppImage
Packaging for OS X
Packaging for Android
Packaging for iOS
Summary

14: Qt Hat Tips and Tricks
Managing your workspace with sessions
Searching with the Locator
Increasing the compilation speed
Examining memory with Qt Creator
Generating random numbers
Silencing unused variable warnings
Logging custom objects to QDebug
Improving log messages
Saving your logs to a file
Generating a command-line interface
Sending and receiving HTTP data
Playing with Qt Gamepad
Styling QML with Qt Quick Controls 2
Summary

Mastering Qt 5 [2 ed.]
 1788993896, 9781788993890, 9781788995399

  • Commentary
  • Converted
  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
Recommend Papers