Сигнали і слоти в Qt: установка, особливості роботи, створення

Новий механізм зв’язку

Qt надає деякі мовні доповнення макроси, які обробляються інструментом генератора коду Meta-object Compiler (MOC). Це призводить до більш просунутою підтримки самоаналізу зі спеціальними механізмами в класах в Qt. До них відноситься підхід сигналів і слотів об’єкта зв’язку.

З’єднання встановлюється з допомогою виклику QObject :: connect (), що дозволяє підключати тільки ті, які мають сумісні аргументи, забезпечуючи таким чином безпеку. Об’єкти не знають про сигнали, на які підписуються їх слоти, тим самим зберігаючи слабку зв’язок об’єктів. Приклад того, як «нормальний» клас C ++ може бути розширений для підтримки сигналів і слотів і як це поведінка реалізовано, можна побачити нижче.

Ці спеціальні макроси вибираються інструментом генератора коду MOC, який генерує відповідні класи та функції, що реалізують всі механізми, специфічні для Qt. Вони повинні бути виконані користувачем програми. Нижче наведена можлива форма слоти Counter :: setValue ().

Можна побачити оператор emit, для очікування Qt сигналу valueChanged () з даними в якості аргументу, коли призначається нове значення.