Класс QSignalTransition
Класс QSignalTransition предоставляет переход, основанный на сигнале Qt. Подробнее...
| Заголовок: | #include <QSignalTransition> |
| CMake: | find_package(Qt6 COMPONENTS StateMachine REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::StateMachine) |
| qmake: | QT += statemachine |
| Наследует: | QAbstractTransition |
Свойства
- senderObject : const QObject*
- signal : QByteArray
Открытые функции
| QSignalTransition(const QObject *sender, PointerToMemberFunction signal, QState *sourceState = nullptr) | |
| QSignalTransition(const QObject *sender, const char *signal, QState *sourceState = nullptr) | |
| QSignalTransition(QState *sourceState = nullptr) | |
| virtual | ~QSignalTransition() |
| const QObject * | senderObject() const |
| void | setSenderObject(const QObject *sender) |
| void | setSignal(const QByteArray &signal) |
| QByteArray | signal() const |
Сигналы
| void | senderObjectChanged() |
| void | signalChanged() |
Переопределённые защищённые функции
| virtual bool | event(QEvent *e) override |
| virtual bool | eventTest(QEvent *event) override |
| virtual void | onTransition(QEvent *event) override |
Подробное описание
Обычно вы используете перегрузку QState::addTransition(), которая принимает отправителя и сигнал в качестве аргументов, а не создаёте объекты QSignalTransition напрямую. QSignalTransition является частью Фреймворка Qt State Machine.
Вы можете наследовать от QSignalTransition и переопределить eventTest(), чтобы сделать переход по сигналу условным; объект события, переданный в eventTest(), будет объектом QStateMachine::SignalEvent. Пример:
class CheckedTransition : public QSignalTransition
{
public:
CheckedTransition(QCheckBox *check)
: QSignalTransition(check, SIGNAL(stateChanged(int))) {}
protected:
bool eventTest(QEvent *e) {
if (!QSignalTransition::eventTest(e))
return false;
QStateMachine::SignalEvent *se = static_cast<QStateMachine::SignalEvent*>(e);
return (se->arguments().at(0).toInt() == Qt::Checked);
}
};
...
QCheckBox *check = new QCheckBox();
check->setTristate(true);
QState *s1 = new QState();
QState *s2 = new QState();
CheckedTransition *t1 = new CheckedTransition(check);
t1->setTargetState(s2);
s1->addTransition(t1); Документация по свойствам
senderObject : const QObject*
Это свойство содержит объект-отправитель, с которым связан этот переход по сигналу.
Функции доступа:
| const QObject * | senderObject() const |
| void | setSenderObject(const QObject *sender) |
Сигнал уведомления:
| void | senderObjectChanged() | [см. примечание ниже] |
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может быть выпущен пользователем.
signal : QByteArray
Это свойство содержит сигнал, с которым связан этот переход по сигналу.
Функции доступа:
| QByteArray | signal() const |
| void | setSignal(const QByteArray &signal) |
Сигнал уведомления:
| void | signalChanged() | [см. примечание ниже] |
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может быть выпущен пользователем.
Документация по членам-функциям
[since 5.7] template <typename PointerToMemberFunction> QSignalTransition::QSignalTransition(const QObject *sender, PointerToMemberFunction signal, QState *sourceState = nullptr)
Это перегруженная функция.
Создаёт новый переход по сигналу, связанный с данным сигналом signal объекта-отправителя sender и данным sourceState. Этот конструктор активируется, если компилятор поддерживает делегирование конструкторов, как указано наличием макроса Q_COMPILER_DELEGATING_CONSTRUCTORS.
Эта функция была представлена в Qt 5.7.
QSignalTransition::QSignalTransition(const QObject *sender, const char *signal, QState *sourceState = nullptr)
Создаёт новый переход по сигналу, связанный с данным сигналом signal объекта-отправителя sender и данным sourceState.
QSignalTransition::QSignalTransition(QState *sourceState = nullptr)
Создаёт новый переход по сигналу с данным sourceState.
[private signal, since 5.4] void QSignalTransition::senderObjectChanged()
Этот сигнал испускается при изменении свойства senderObject.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может быть выпущен пользователем.
Примечание: Сигнал уведомления для свойства senderObject.
Эта функция была представлена в Qt 5.4.
См. также QSignalTransition::senderObject.
[private signal, since 5.4] void QSignalTransition::signalChanged()
Этот сигнал испускается при изменении свойства signal.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может быть выпущен пользователем.
Примечание: Сигнал уведомления для свойства signal.
Эта функция была представлена в Qt 5.4.
См. также QSignalTransition::signal.
[virtual] QSignalTransition::~QSignalTransition()
Уничтожает этот переход по сигналу.
[override virtual protected] bool QSignalTransition::event(QEvent *e)
Переопределяет: QAbstractTransition::event(QEvent *e).
[override virtual protected] bool QSignalTransition::eventTest(QEvent *event)
Переопределяет: QAbstractTransition::eventTest(QEvent *event).
Встроенная реализация возвращает true если event является объектом QStateMachine::SignalEvent и отправитель и индекс сигнала события совпадают с этим переходом, и возвращает false в противном случае.
[override virtual protected] void QSignalTransition::onTransition(QEvent *event)
Переопределяет: QAbstractTransition::onTransition(QEvent *event).
const QObject *QSignalTransition::senderObject() const
Возвращает объект отправителя, связанный с этим переходом сигнала.
Примечание: Функция-получатель для свойства senderObject.
См. также setSenderObject().
void QSignalTransition::setSenderObject(const QObject *sender)
Устанавливает объект sender, связанный с этим переходом сигнала.
Примечание: Функция-установщик для свойства senderObject.
См. также senderObject().
void QSignalTransition::setSignal(const QByteArray &signal)
Устанавливает сигнал, связанный с этим переходом сигнала.
Примечание: Функция-установщик для свойства signal.
См. также signal().
QByteArray QSignalTransition::signal() const
Возвращает сигнал, связанный с этим переходом сигнала.
Примечание: Функция-получатель для свойства signal.
См. также setSignal().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qsignaltransition.html