O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Mastering Qt 5

Book Description

Master application development by writing succinct, robust, and reusable code with Qt 5

About This Book

  • Unleash the power of Qt 5 with C++14
  • Integrate useful third-party libraries such as OpenCV
  • Package and deploy your application on multiple platforms

Who This Book Is For

This book will appeal to developers and programmers who would like to build GUI-based applications. Knowledge of C++ is necessary and the basics of Qt would be helpful.

What You Will Learn

  • 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

In Detail

Qt 5.7 is an application development framework that provides a great user experience and develops full-capability applications with Qt Widgets, QML, and even Qt 3D.

This book will address challenges in successfully developing cross-platform applications with the Qt framework. Cross-platform development needs a well-organized project. Using this book, you will have a better understanding of the Qt framework and the tools to resolve serious issues such as linking, debugging, and multithreading. Your journey will start with the new Qt 5 features. Then you will explore different platforms and learn to tame them. Every chapter along the way is a logical step that you must take to master Qt. The journey will end in an application that has been tested and is ready to be shipped.

Style and approach

This is an easy-to-follow yet comprehensive guide to building applications in Qt. Each chapter covers increasingly advanced topics, with subjects grouped according to their complexity as well as their usefulness. Packed with practical examples and explanations, Mastering Qt contains everything you need to take your applications to the next level.

Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the code file.

Table of Contents

  1. Mastering Qt 5
    1. Mastering Qt 5
    2. Credits
    3. About the Authors
    4. About the Reviewer
    5. www.PacktPub.com
      1. Why subscribe?
    6. Preface
      1. What this book covers
      2. What you need for this book
      3. Who this book is for
      4. Conventions
      5. Reader feedback
      6. Customer support
        1. Downloading the example code
        2. Errata
        3. Piracy
        4. Questions
    7. 1. Get Your Qt Feet Wet
      1. Creating a project
      2. MainWindow structure
      3. Qt Designer
      4. Signals and slots
      5. Custom QWidget
      6. Adding a task
      7. Using a QDialog
      8. Distributing code responsibility
      9. Emitting a custom signal using lambdas
      10. Simplifying with the auto type and a range-based for loop
      11. Summary
    8. 2. Discovering QMake Secrets
      1. Designing a cross-platform project
        1. Adding the Windows implementation
        2. Adding the Linux implementation
        3. Adding the Mac OS implementation
      2. Transforming SysInfo into a singleton
      3. Exploring Qt Charts
      4. CpuWidget using QCharts
      5. Memory using Qcharts
      6. The .pro file in depth
      7. Under the hood of qmake
      8. Beneath Q_OBJECT and signals/slots
      9. Summary
    9. 3. Dividing Your Project and Ruling Your Code
      1. Designing a maintainable project
      2. Defining data classes
      3. Storing your data in a database
      4. Protecting your code with a smart pointer
      5. Implementing the model
      6. Summary
    10. 4. Conquering the Desktop UI
      1. Creating a GUI linked to a core shared library
      2. Listing your albums with AlbumListWidget
      3. Creating a ThumbnailProxyModel
      4. Displaying the selected album with AlbumWidget
      5. Enhancing thumbnails with PictureDelegate
      6. Displaying a picture with PictureWidget
      7. Composing your Gallery app
      8. Summary
    11. 5. Dominating the Mobile UI
      1. Starting with Qt Quick and QML
      2. Checking your development environment
      3. Creating a Qt Quick project
      4. Preparing your Qt Quick gallery entry point
      5. Displaying albums with ListView
      6. Theming the application with a QML singleton
      7. Loading a database on mobile
      8. Creating a new album from a custom InputDialog
      9. Loading images with an ImageProvider
      10. Displaying thumbnails in a GridView
      11. Swiping through full resolution pictures
      12. Summary
    12. 6. Even Qt Deserves a Slice of Raspberry Pi
      1. Discovering Qt3D
      2. Configuring Qt for your Raspberry Pi
      3. Creating an entry point for your Qt3D code
      4. Setting up the scene
      5. Assembling your Qt3D entities
      6. Preparing the board game
      7. Crafting entities from the factory
      8. Building a snake engine in JavaScript
      9. Varying the HUD with QML states
      10. Profiling your QML application
      11. Summary
    13. 7. Third-Party Libraries Without a Headache
      1. Creating your Qt Designer plugin
      2. Configuring the project for Windows
      3. Configuring the project for Linux
      4. Configuring the project for Mac
      5. Implementing your OpenCV filters
      6. Designing the UI with FilterWidget
      7. Exposing your plugin to Qt Designer
      8. Using your Qt Designer plugin
      9. Building the image-filter application
      10. Summary
    14. 8. Animations - It's Alive, Alive!
      1. Preparing an SDK
      2. Creating your plugins
      3. Loading your plugins dynamically
      4. Using the plugins inside the application
      5. Discovering the Animation Framework
      6. Making your thumbnails jump
      7. Fading the picture in
      8. Flashing the thumbnail in a sequence
      9. Summary
    15. 9. Keeping Your Sanity with Multithreading
      1. Discovering QThread
      2. Flying over Qt multithreading technologies
      3. Architecting the Mandelbrot project
      4. Defining a Job class with QRunnable
      5. Using QThreadPool in MandelbrotCalculator
      6. Displaying the fractal with MandelbrotWidget
      7. Summary
    16. 10. Need IPC? Get Your Minions to Work
      1. Architecturing an IPC project
      2. Laying down the foundations with an SDK
      3. Working with QDataStream and QTcpSocket
      4. Interacting with sockets in the worker
      5. Interacting with sockets from the application
      6. Building your own QTcpServer
      7. Summary
    17. 11. Having Fun with Serialization
      1. Architecting the drum machine project
      2. Creating a drum track
      3. Making your objects serializable with QVariant
      4. Serializing objects in JSON format
      5. Serializing objects in XML format
      6. Serializing objects in binary format
      7. Playing low latency sounds with QSoundEffect
      8. Triggering a QButton with your keyboard
      9. Bringing PlaybackWorker to life
      10. Accepting mouse drag and drop events
      11. Summary
    18. 12. You Shall (Not) Pass with QTest
      1. Discovering Qt Test
      2. Executing your tests
      3. Writing factorized tests with datasets
      4. Benchmarking your code
      5. Testing your GUI
      6. Spying on your application with QSignalSpy
      7. Summary
    19. 13. All Packed and Ready to Deploy
      1. Packaging your application
      2. Packaging for Windows
      3. Packaging for Linux with a distribution package
      4. Packaging for Linux with AppImage
      5. Packaging for Mac OS X
      6. Packaging for Android
      7. Packaging for iOS
      8. Summary
    20. 14. Qt Hat Tips and Tricks
      1. Managing your workspace with sessions
      2. Searching with the Locator
      3. Increasing the compilation speed
      4. Examining the memory with Qt Creator
      5. Generating random numbers
      6. Silencing unused variable warnings
      7. Logging custom objects to QDebug
      8. Improving log messages
      9. Saving your logs to a file
      10. Generating a command-line interface
      11. Sending and receiving HTTP data
      12. Summary