Класс 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); Документация по свойствам
[bindable] senderObject : const QObject*
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит объект отправителя, с которым связан этот переход по сигналу.
[bindable] signal : QByteArray
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит сигнал, с которым связан этот переход по сигналу.
Документация по членам функций
[since 5.7] template <typename PointerToMemberFunction> QSignalTransition::QSignalTransition(const QObject *sender, PointerToMemberFunction signal, QState *sourceState = nullptr)
Это перегруженная функция.
Создаёт новый переход по сигналу, связанный с заданным сигналом заданного объекта sender и заданным sourceState. Этот конструктор активируется, если компилятор поддерживает делегирование конструкторов, как указано наличием макроса Q_COMPILER_DELEGATING_CONSTRUCTORS.
Эта функция была добавлена в Qt 5.7.
QSignalTransition::QSignalTransition(const QObject *sender, const char *signal, QState *sourceState = nullptr)
Создаёт новый переход по сигналу, связанный с заданным сигналом заданного 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.2/qsignaltransition.html