Chapter 17. Advanced Signals and Slots

In this chapter, we’ll cover more topics concerning signals and slots. In the first section, we’ll look at additional methods of connecting signals to slots, and afterwards we will show you some useful tricks to help you get even more out of signals and slots. We also cover actions here that are not the same as signals and slots, but serve the same purpose, such as connecting user interaction to program functionality.

Signals and Slots Revisited

You have already learned the basics about signals and slots in Chapter 2, but there are a few things we haven’t told you yet. You probably won’t need this information very often, but it can come in handy from time to time.

First, you do not need to use the static method QObject::connect() when you are in a method of a class derived from QObject (which is usually the case when you program with Qt). So, instead of writing:

QObject::connect( myslider, SIGNAL( valueChanged( int ) ), 
                  mylcdnum, SLOT( display( int ) ) );

you could write:

connect( myslider, SIGNAL( valueChanged( int ) ), 
         mylcdnum, SLOT( display( int ) ) );

if this code is located in a method of a class derived from QObject. Apart from having fewer characters to type, you don’t save anything here, though.

To save even more typing, you can also leave out the receiver if the code is in a method of the object that is to receive the signal.

For example, you could write the following:

class MyLCDNum : public QLCDNumber { ... } MyLCDNumber::MyLCDNumber( ...

Get Programming with Qt, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.