QSignalTransition Class

Die Klasse QSignalTransition bietet einen Übergang, der auf einem Qt-Signal basiert. Mehr...

Kopfzeile: #include <QSignalTransition>
CMake: find_package(Qt6 REQUIRED COMPONENTS StateMachine)
target_link_libraries(mytarget PRIVATE Qt6::StateMachine)
qmake: QT += statemachine
Vererbt: QAbstractTransition

Eigenschaften

Öffentliche Funktionen

QSignalTransition(QState *sourceState = nullptr)
QSignalTransition(const QObject *sender, const char *signal, QState *sourceState = nullptr)
QSignalTransition(const QObject *sender, PointerToMemberFunction signal, QState *sourceState = nullptr)
virtual ~QSignalTransition()
QBindable<const QObject *> bindableSenderObject()
QBindable<QByteArray> bindableSignal()
const QObject *senderObject() const
void setSenderObject(const QObject *sender)
void setSignal(const QByteArray &signal)
QByteArray signal() const

Signale

Reimplementierte geschützte Funktionen

virtual bool event(QEvent *e) override
virtual bool eventTest(QEvent *event) override
virtual void onTransition(QEvent *event) override

Detaillierte Beschreibung

Normalerweise würden Sie die Überladung von QState::addTransition() verwenden, die einen Absender und ein Signal als Argumente annimmt, anstatt direkt QSignalTransition-Objekte zu erstellen. QSignalTransition ist Teil des Qt State Machine Frameworks.

Sie können die Unterklasse QSignalTransition verwenden und eventTest() neu implementieren, um einen Signalübergang zu konditionieren; das an eventTest() übergebene Ereignisobjekt wird ein QStateMachine::SignalEvent Objekt sein. Beispiel:

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);

Eigenschaft Dokumentation

[bindable] senderObject : const QObject*

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält das Absenderobjekt, mit dem dieser Signalübergang verbunden ist

[bindable] signal : QByteArray

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält das Signal, mit dem dieser Signalübergang verknüpft ist

Dokumentation der Mitgliedsfunktionen

QSignalTransition::QSignalTransition(QState *sourceState = nullptr)

Konstruiert einen neuen Signalübergang mit dem angegebenen sourceState.

QSignalTransition::QSignalTransition(const QObject *sender, const char *signal, QState *sourceState = nullptr)

Konstruiert einen neuen Signalübergang, der mit dem angegebenen signal des angegebenen sender und mit dem angegebenen sourceState verbunden ist.

template <typename PointerToMemberFunction> QSignalTransition::QSignalTransition(const QObject *sender, PointerToMemberFunction signal, QState *sourceState = nullptr)

Dies ist eine überladene Funktion.

Konstruiert einen neuen Signalübergang, der mit dem angegebenen signal des angegebenen sender Objekts und mit dem angegebenen sourceState verbunden ist. Dieser Konstruktor ist aktiviert, wenn der Compiler delegierende Konstruktoren unterstützt, was durch das Vorhandensein des Makros Q_COMPILER_DELEGATING_CONSTRUCTORS angezeigt wird.

[virtual noexcept] QSignalTransition::~QSignalTransition()

Zerstört diesen Signalübergang.

[override virtual protected] bool QSignalTransition::event(QEvent *e)

Reimplements: QAbstractTransition::event(QEvent *e).

[override virtual protected] bool QSignalTransition::eventTest(QEvent *event)

Reimplements: QAbstractTransition::eventTest(QEvent *Event).

Die Standardimplementierung gibt true zurück, wenn event ein QStateMachine::SignalEvent Objekt ist und der Absender und der Signalindex des Ereignisses mit diesem Übergang übereinstimmen, und gibt ansonsten false zurück.

[override virtual protected] void QSignalTransition::onTransition(QEvent *event)

Reimplements: QAbstractTransition::onTransition(QEvent *Event).

const QObject *QSignalTransition::senderObject() const

Gibt das mit diesem Signalübergang verknüpfte Absenderobjekt zurück.

Hinweis: Getter-Funktion für die Eigenschaft senderObject.

Siehe auch setSenderObject().

[private signal] void QSignalTransition::senderObjectChanged()

Dieses Signal wird ausgesendet, wenn die Eigenschaft senderObject geändert wird.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann aber nicht vom Benutzer ausgegeben werden.

Hinweis: Benachrichtigungssignal für die Eigenschaft senderObject.

Siehe auch QSignalTransition::senderObject.

void QSignalTransition::setSenderObject(const QObject *sender)

Setzt das mit diesem Signalübergang verbundene sender Objekt.

Hinweis: Setter-Funktion für die Eigenschaft senderObject.

Siehe auch senderObject().

void QSignalTransition::setSignal(const QByteArray &signal)

Setzt die mit diesem Signalübergang verbundene signal.

Hinweis: Setter-Funktion für die Eigenschaft signal.

Siehe auch signal().

QByteArray QSignalTransition::signal() const

Gibt das mit diesem Signalübergang verbundene Signal zurück.

Hinweis: Getter-Funktion für die Eigenschaft signal.

Siehe auch setSignal().

[private signal] void QSignalTransition::signalChanged()

Dieses Signal wird ausgesendet, wenn die Signaleigenschaft geändert wird.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann aber nicht vom Benutzer ausgegeben werden.

Hinweis: Benachrichtigungssignal für die Eigenschaft signal.

Siehe auch QSignalTransition::signal.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.