Введение в разработку приложений на платформе Atom/MeeGo. Граничин О.Н - 50 стр.

UptoLike

50
изменилось, выработав сигнал valueChanged() и у него есть слот, в который другие объекты могут
посылать сигналы.
Все классы, содержащие сигналы и слоты должны указывать макрос Q_OBJECT в начале их
описания. Они также должны быть потомками (прямо или косвенно) QObject.
Слоты реализуются программистом. Возможная реализация слота Counter::setValue() выглядит
следующим образом:
void Counter::setValue(int value)
{
if (value != m_value) {
m_value = value;
emit valueChanged(value);
}
}
Ключевое слово emit вырабатывает сигнал valueChanged() объекта с новым значением в
качестве аргумента.
В следующем примере мы создаем два объекта типа Counter и соединяем сигнал valueChanged()
первого со слотом setValue() второго используя статическую функцию QObject::connect():
Counter a, b;
QObject::connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int)));
a.setValue(12);// a.value() == 12, b.value() == 12
b.setValue(48);// a.value() == 12, b.value() == 48
Вызов a.setValue(12) вырабатывает сигнал valueChanged(12), который получит объект b в свой
слот setValue() slot, т.е. будет вызвана функция b.setValue(12). Тогда b вырабатывает такой же
сигнал valueChanged(), но так как он не подключен ни к одному слоту, это сигнал будет
проигнорирован.
Отметим, что функция setValue() устанавливает новое значение и вырабатывает сигнал только
есть value != m_value. Это предотвращает бесконечный цикл в случае кругового соединения
(например, если бы b.valueChanged() был бы подключен к a.setValue()).
Сигнал вырабатывается для каждого соединения. Если соединение продублировать, будут
выработаны два сигнала. Соединение всегда можно разорвать, использовав функцию
QObject::disconnect().
Приведенный выше пример показывает, как объекты могут работать вместе без необходимости
знать что-либо друг о друге.
5.4. Лабораторная работа № 3 «Знакомство с MeeGo SD
5.4.1. Цель лабораторной работы
Научиться устанавливать на компьютер и пользоваться MeeGo SDK.
5.4.2. Введение
План работы
· Установка MeeGo SDK
· Работа с MeeGo SDK
o Создание приложения в qtcreator
o Его сборка и запуск.
Необходимые навыки
· Базовое знание языков программирования C/C++.