Составители:
Рубрика:
62
Counter() { m_value = 0; }
int value() const { return m_value; }
public slots:
void setValue(int value);
signals:
void valueChanged(int newValue);
private:
int m_value;
};
Класс, наследованный от QObject, имеет то же самое
внутреннее состояние и обеспечивает публичные методы для
доступа к этому состоянию, но дополнительно у него есть
поддержка для использования сигналов и слотов. Этот класс может
сообщить внешнему миру, что его состояние изменилось,
выработав сигнал 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;
Страницы
- « первая
- ‹ предыдущая
- …
- 60
- 61
- 62
- 63
- 64
- …
- следующая ›
- последняя »
