Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Розробка тестової програми

Серед особливостей інструментарію 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

{




Переглядів: 422

<== попередня сторінка | наступна сторінка ==>
Довідкова інформація | Q_OBJECT

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.002 сек.