In this chapter, you learned how to keep your application responsive when running a slow code. You learned how to use QTimer to defer actions to a later time, either as a one-time or repeating action. You learned how to push code to another thread using QThread, both by using moveToThread() and by subclassing QThread. Finally, you learned how to use QThreadPool and QRunnable to build highly concurrent data processing applications.
In Chapter 11, Creating Rich Text with QTextDocument, we're going to take a look at working with rich text in PyQt. You'll learn how to define rich text using an HTML-like markup and how to inspect and manipulate documents using the QDocument API. You'll also learn how to take advantage of Qt's printing support to bring documents into the real world.