МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
|||||||
Розробка тестової програмиСеред особливостей інструментарію Qt окремо слід звернути увагу на наявність Meta Object Compiler (MOC) - попередньої системи обробки вихідного коду (що робить Qt бібліотекою не для “чистої мови C++”, а для його особливого діалекту, з якого MOC робить переклад для подальшої компіляції будь-яким стандартним C++ компілятором. На щастя, відмінностей від стандартної мови C++ не багато і вони не заважають). MOC дозволяє у багато разів збільшити потужність бібліотек, вводячи такі поняття, як “слоти” та “сигнали”. Крім того, це дозволяє зробити код більш лаконічним. Утиліта MOC шукає в заголовних файлах на C++ описи класів, що містять макроси Q_OBJECT, і створює додатковий вихідний файл на C++, що містить “метаоб'ектний” код для класів.
“Сигнали” та “слоти” (далі терміни вживаються без лапок) є технікою, альтернативною до функцій зворотного виклику (callback), що дозволяють організувати подієве керування, звичайне для програм з графічним інтерфейсом користувача. Сигнал генерується при настанні певної події. Віджети (компоненти інтерфейсу) Qt мають множину визначених сигналів, а також допускається додання власних сигналів у підкласах (загалом усі підкласи, похідні від Qobject, можуть мати слоти та сигнали). Слот є “приймачем” або “обробником” сигналу, тож реакція на події в системі програмується підключенням слотів до сигналів. Цей механізм подібний до сценарію “підписання на оповіщення”: при зміні свого стану об’єкт, якщо це може бути цікавим іншим об’єктам (тобто вони “підписуються” на оповіщення про відповідну подію), генерує сигнал (не цікавлячись, які саме слоти його отримують), а ті об’єкти, що підписані на цю подію, отримують оповіщення через слот і можуть реагувати на неї.
Розглянемо невеличкий приклад. Нехай є наступний клас лічильника:
class Counter { public: Counter() { value = 0; } int getValue() const { return value; } void setValue(int val) { value = val; } private: int value; };
Розширимо його сигналом та слотом:
#include <QObject> class Counter : public QObject {
|
||||||||
|