QScxmlStateMachine Class
QScxmlStateMachine 클래스는 SCXML 파일에서 생성된 상태 머신에 대한 인터페이스를 제공합니다. 더 보기...
Header: | #include <QScxmlStateMachine> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Scxml) target_link_libraries(mytarget PRIVATE Qt6::Scxml) |
qmake: | QT += scxml |
QML에서: | ScxmlStateMachine |
상속합니다: | QObject |
속성
|
|
공용 기능
QStringList | activeStateNames(bool compress = true) const |
QBindable<QScxmlDataModel *> | bindableDataModel() |
QBindable<QVariantMap> | bindableInitialValues() |
QBindable<bool> | bindableInitialized() const |
QBindable<QList<QScxmlInvokableService *>> | bindableInvokedServices() |
QBindable<QScxmlCompiler::Loader *> | bindableLoader() |
QBindable<QScxmlTableData *> | bindableTableData() |
void | cancelDelayedEvent(const QString &sendId) |
QMetaObject::Connection | connectToEvent(const QString &scxmlEventSpec, Functor &&functor, Qt::ConnectionType type = Qt::AutoConnection) |
QMetaObject::Connection | connectToEvent(const QString &scxmlEventSpec, const QObject *context, Functor &&functor, Qt::ConnectionType type = Qt::AutoConnection) |
QMetaObject::Connection | connectToEvent(const QString &scxmlEventSpec, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection) |
QMetaObject::Connection | connectToState(const QString &scxmlStateName, Functor &&functor, Qt::ConnectionType type = Qt::AutoConnection) |
QMetaObject::Connection | connectToState(const QString &scxmlStateName, const QObject *context, Functor &&functor, Qt::ConnectionType type = Qt::AutoConnection) |
QMetaObject::Connection | connectToState(const QString &scxmlStateName, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection) |
QScxmlDataModel * | dataModel() const |
QVariantMap | initialValues() |
QList<QScxmlInvokableService *> | invokedServices() const |
bool | isActive(const QString &scxmlStateName) const |
bool | isDispatchableTarget(const QString &target) const |
bool | isInitialized() const |
bool | isInvoked() const |
bool | isRunning() const |
QScxmlCompiler::Loader * | loader() const |
QString | name() const |
QList<QScxmlError> | parseErrors() const |
QString | sessionId() const |
void | setDataModel(QScxmlDataModel *model) |
void | setInitialValues(const QVariantMap &initialValues) |
void | setLoader(QScxmlCompiler::Loader *loader) |
void | setRunning(bool running) |
void | setTableData(QScxmlTableData *tableData) |
QStringList | stateNames(bool compress = true) const |
void | submitEvent(QScxmlEvent *event) |
void | submitEvent(const QString &eventName) |
void | submitEvent(const QString &eventName, const QVariant &data) |
QScxmlTableData * | tableData() const |
공용 슬롯
신호
void | dataModelChanged(QScxmlDataModel *model) |
void | finished() |
void | initialValuesChanged(const QVariantMap &initialValues) |
void | initializedChanged(bool initialized) |
void | invokedServicesChanged(const QList<QScxmlInvokableService *> &invokedServices) |
void | loaderChanged(QScxmlCompiler::Loader *loader) |
void | log(const QString &label, const QString &msg) |
void | reachedStableState() |
void | runningChanged(bool running) |
void | tableDataChanged(QScxmlTableData *tableData) |
정적 공용 멤버
QScxmlStateMachine * | fromData(QIODevice *data, const QString &fileName = QString()) |
QScxmlStateMachine * | fromFile(const QString &fileName) |
std::function<void (bool)> | onEntry(Functor functor) |
std::function<void (bool)> | onEntry(const QObject *receiver, const char *method) |
std::function<void (bool)> | onEntry(const typename QtPrivate::FunctionPointer<PointerToMemberFunction>::Object *receiver, PointerToMemberFunction method) |
std::function<void (bool)> | onExit(Functor functor) |
std::function<void (bool)> | onExit(const QObject *receiver, const char *method) |
std::function<void (bool)> | onExit(const typename QtPrivate::FunctionPointer<PointerToMemberFunction>::Object *receiver, PointerToMemberFunction method) |
보호된 함수
bool | isActive(int stateIndex) const |
상세 설명
QScxmlStateMachine은 상태 차트 XML(SCXML)의 구현입니다.
SCXML 파일에 정의된 모든 상태는 QScxmlStateMachine의 프로퍼티로 액세스할 수 있습니다. 이러한 속성은 부울 값이며 상태의 활성 또는 비활성 여부를 나타냅니다.
참고: QScxmlStateMachine이 올바르게 작동하려면 QEventLoop 이 필요합니다. 이벤트 루프는 이벤트에 대한 delay
속성을 구현하고 중첩(또는 상위) 상태 머신에서 이벤트가 수신될 때 상태 머신의 처리를 예약하는 데 사용됩니다.
속성 문서
[bindable]
dataModel : QScxmlDataModel*
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 속성은 이 상태 머신에 사용할 데이터 모델을 보유합니다.
SCXML 데이터 모델은 SCXML 사양 - 5 데이터 모델 및 데이터 조작에 설명되어 있습니다. 지원되는 데이터 모델에 대한 자세한 내용은 SCXML 규정 준수를 참조하세요.
상태 머신이 initialized
인 상태에서 데이터 모델을 변경하는 것은 SCXML 표준에 명시되어 있지 않으며 정의되지 않은 동작으로 이어집니다.
QScxmlDataModel, QScxmlNullDataModel, 및 QScxmlCppDataModel도 참조하세요 .
[bindable]
initialValues : QVariantMap
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 속성은 데이터 모델을 설정하는 데 사용할 초기 값을 보유합니다.
QScxmlStateMachine::init() 및 QScxmlDataModel 을참조하세요 .
[bindable read-only]
initialized : bool
참고: 이 프로퍼티는 QProperty 바인딩을 지원합니다.
이 프로퍼티는 상태 머신이 초기화되었는지 여부를 보유합니다.
상태 머신이 초기화된 경우 true
, 그렇지 않은 경우 false
입니다.
QScxmlStateMachine::init() 및 QScxmlDataModel도 참조하세요 .
[read-only]
invoked : const bool
이 속성은 스테이트 머신이 외부 스테이트 머신에서 호출되었는지 여부를 보유합니다.
true
상태 머신이 <invoke>
요소로 서비스로 시작된 경우 false
, 그렇지 않은 경우 입니다.
액세스 함수:
bool | isInvoked() const |
[bindable read-only]
invokedServices : QList<QScxmlInvokableService*>
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 프로퍼티에는 메인 상태 머신에서 (재귀적으로) 호출된 SCXML 서비스 목록이 저장됩니다.
[bindable]
loader : QScxmlCompiler::Loader*
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 프로퍼티는 현재 상태 머신의 URI를 확인하고 로드하는 데 사용되는 로더를 보유합니다.
[read-only]
name : const QString
이 속성은 <scxml>
태그의 이름 속성에 의해 설정된 상태 머신의 이름을 보유합니다.
액세스 함수:
QString | name() const |
[read-only]
parseErrors : const QList<QScxmlError>
이 속성에는 SCXML 파일에서 상태 머신을 생성하는 동안 발생한 구문 분석 오류 목록이 저장됩니다.
액세스 함수:
QList<QScxmlError> | parseErrors() const |
running : bool
이 프로퍼티는 이 상태 머신의 실행 상태를 보유합니다.
액세스 함수입니다:
bool | isRunning() const |
void | setRunning(bool running) |
알림 신호:
void | runningChanged(bool running) |
start()도 참조하세요 .
[read-only]
sessionId : const QString
이 속성은 현재 상태 머신의 세션 ID를 보유합니다.
세션 ID는 상위 및 하위 스테이트 머신 간의 메시지 라우팅에 사용됩니다. 상태 머신이 <invoke>
요소에 의해 시작되는 경우, 이 요소가 전송하는 모든 이벤트에는 invokeid
필드가 세션 ID로 설정됩니다. 상태 머신은 이벤트의 원본( <send>
요소의 target 또는 targetexpr 속성으로 설정됨)을 사용하여 올바른 하위 상태 머신으로 메시지를 발송합니다.
함수 액세스:
QString | sessionId() const |
QScxmlEvent::invokeId()도 참조하세요 .
[bindable]
tableData : QScxmlTableData*
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 프로퍼티는 SCXML 파일에서 C++를 생성할 때 사용되는 테이블 데이터를 보유합니다.
스테이트 머신을 구현하는 클래스는 이 프로퍼티를 사용하여 생성된 테이블 데이터를 할당합니다. 상태 머신은 테이블 데이터의 소유권을 가지지 않습니다.
멤버 함수 문서
template <typename Functor> QMetaObject::Connection QScxmlStateMachine::connectToEvent(const QString &scxmlEventSpec, Functor &&functor, Qt::ConnectionType type = Qt::AutoConnection)
template <typename Functor> QMetaObject::Connection QScxmlStateMachine::connectToEvent(const QString &scxmlEventSpec, const QObject *context, Functor &&functor, Qt::ConnectionType type = Qt::AutoConnection)
scxmlEventSpec 으로 지정된 이벤트에서 functor 로 지정된 type 연결을 생성하며, 이 연결은 선택적 context 객체의 함수 또는 멤버 함수가 될 수 있습니다.
수신자의 functor 은 QScxmlEvent 을 매개변수로 가져와야 합니다.
SCXML 문서의 이벤트 사양과 달리 여기서는 scxmlEventSpec 에는 공백이 허용되지 않습니다. 접두사가 다른 여러 이벤트에 연결하려면 connectToEvent()를 여러 번 호출해야 합니다.
나중에 연결을 끊는 데 사용할 수 있는 연결에 대한 핸들을 반환합니다.
template <typename Functor> QMetaObject::Connection QScxmlStateMachine::connectToState(const QString &scxmlStateName, Functor &&functor, Qt::ConnectionType type = Qt::AutoConnection)
template <typename Functor> QMetaObject::Connection QScxmlStateMachine::connectToState(const QString &scxmlStateName, const QObject *context, Functor &&functor, Qt::ConnectionType type = Qt::AutoConnection)
scxmlStateName 으로 지정된 상태에서 functor 로 지정된 type 연결을 생성하며, 이 연결은 선택적 context 객체의 함수 또는 멤버 함수가 될 수 있습니다.
수신자의 functor 는 연결된 상태가 활성 상태인지 비활성 상태인지를 나타내는 부울 인수를 받아야 합니다.
나중에 연결을 끊는 데 사용할 수 있는 연결에 대한 핸들을 반환합니다.
[invokable]
QStringList QScxmlStateMachine::activeStateNames(bool compress = true) const
모든 활성 상태의 상태 이름 목록을 검색합니다.
상태가 활성화되면 정의에 따라 모든 상위 상태가 활성화됩니다. compress 이 true
(기본값)인 경우 부모 상태는 필터링되고 리프 상태만 반환됩니다. false
인 경우 활성 상태의 전체 목록이 반환됩니다.
참고: 이 함수는 메타 객체 시스템과 QML을 통해 호출할 수 있습니다. Q_INVOKABLE 을 참조하세요.
[invokable]
void QScxmlStateMachine::cancelDelayedEvent(const QString &sendId)
지정된 sendId 으로 지연된 이벤트를 취소합니다.
참고: 이 함수는 메타객체 시스템과 QML을 통해 호출할 수 있습니다. Q_INVOKABLE 을 참조하세요.
QMetaObject::Connection QScxmlStateMachine::connectToEvent(const QString &scxmlEventSpec, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)
scxmlEventSpec 에서 지정한 이벤트에서 receiver 객체의 method 로 지정된 type 연결을 생성합니다. 수신자의 method 은 QScxmlEvent 을 매개변수로 받을 수 있습니다. 예를 들어
void mySlot(const QScxmlEvent &event);
SCXML 문서의 이벤트 사양과 달리 여기서는 scxmlEventSpec 에는 공백이 허용되지 않습니다. 접두사가 다른 여러 이벤트에 연결하려면 connectToEvent()를 여러 번 호출해야 합니다.
나중에 연결을 끊는 데 사용할 수 있는 연결에 대한 핸들을 반환합니다.
QMetaObject::Connection QScxmlStateMachine::connectToState(const QString &scxmlStateName, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)
scxmlStateName 으로 식별된 상태에서 receiver 객체의 method 로 지정된 type 연결을 생성합니다. 수신자의 method 는 연결된 상태가 활성 상태인지 비활성 상태인지를 나타내는 부울 인수를 받을 수 있습니다. 예를 들어
void mySlot(bool active);
나중에 연결을 끊는 데 사용할 수 있는 연결에 대한 핸들을 반환합니다.
QScxmlDataModel *QScxmlStateMachine::dataModel() const
상태 머신에서 사용하는 데이터 모델을 반환합니다.
참고: 데이터 모델 속성에 대한 게터 함수입니다.
setDataModel()도 참조하세요 .
[signal]
void QScxmlStateMachine::finished()
이 신호는 상태 머신이 최상위 최종 상태에 도달할 때 방출됩니다.
running도 참조하세요 .
[static]
QScxmlStateMachine *QScxmlStateMachine::fromData(QIODevice *data, const QString &fileName = QString())
data 에서 지정한 QIODevice 에서 읽어서 상태 머신을 생성합니다.
이 메서드는 항상 상태 머신을 반환합니다. SCXML 파일을 읽는 동안 오류가 발생하면 fileName, 상태 머신을 시작할 수 없습니다. parseErrors () 메서드를 호출하여 오류를 검색할 수 있습니다.
parseErrors()도 참조하세요 .
[static]
QScxmlStateMachine *QScxmlStateMachine::fromFile(const QString &fileName)
fileName 에 지정된 SCXML 파일에서 상태 머신을 생성합니다.
이 메서드는 항상 상태 머신을 반환합니다. SCXML 파일을 읽는 동안 오류가 발생하면 상태 머신을 시작할 수 없습니다. parseErrors () 메서드를 호출하여 오류를 검색할 수 있습니다.
parseErrors()도 참조하세요 .
[slot]
bool QScxmlStateMachine::init()
상태 머신을 초기화합니다.
상태 머신 초기화는 QScxmlDataModel::setup() 호출, <data>
요소의 초기 값 설정, <scxml>
태그의 <script>
태그 실행으로 구성됩니다. 초기 데이터 값은 initialValues
속성에서 가져옵니다.
구문 분석 오류가 발생하거나 초기화 단계 중 하나라도 실패하면 false
을 반환합니다. 그렇지 않으면 true
을 반환합니다.
[invokable]
bool QScxmlStateMachine::isActive(const QString &scxmlStateName) const
scxmlStateName 에 지정된 상태가 활성화된 경우 true
, 그렇지 않으면 false
을 반환합니다.
참고: 이 함수는 메타 객체 시스템과 QML을 통해 호출할 수 있습니다. Q_INVOKABLE 을 참조하세요.
[protected]
bool QScxmlStateMachine::isActive(int stateIndex) const
ID가 stateIndex 인 상태가 활성화되면 true
을 반환합니다.
이 메서드는 SCXML 상태 머신의 컴파일된 표현에 대한 인터페이스의 일부입니다. 이 메서드는 내부적으로만, 그리고 SCXML 문서에서 컴파일된 상태 머신에서만 사용해야 합니다.
[invokable]
bool QScxmlStateMachine::isDispatchableTarget(const QString &target) const
이 상태 머신이 target 으로 메시지를 보낼 수 있는 경우 true
을 반환합니다.
유효한 대상은
#_parent
현재 상태 머신이 다음에 의해 시작된 경우 부모 상태 머신의 경우<invoke>
#_internal
에 의해 시작된 경우 현재 상태 머신의 경우#_scxml_sessionid
, 여기서sessionid
은 현재 상태 머신의 세션 ID입니다.#_servicename
에서servicename
는 이 스테이트 머신이<invoke>
로 시작한 서비스의 ID 또는 이름입니다.
참고: 이 함수는 메타객체 시스템과 QML을 통해 호출할 수 있습니다. Q_INVOKABLE 을 참조하세요.
bool QScxmlStateMachine::isRunning() const
상태 머신이 실행 중이면 true
, 그렇지 않으면 false
을 반환합니다.
참고: 속성에 대한 게터 함수 running.
setRunning() 및 runningChanged()도 참조하세요 .
[signal]
void QScxmlStateMachine::log(const QString &label, const QString &msg)
<log>
label 은 태그의 <log>
label 속성 값이고, 은 태그의 평가된 msg <log>
expr 속성 값입니다. expr 속성이 없는 경우 null 문자열이 반환됩니다.
[static]
template <typename Functor> std::function<void (bool)> QScxmlStateMachine::onEntry(Functor functor)
부울 인수를 받아들이고 인수가 true
인 경우 주어진 functor 을 호출하는 함수를 반환합니다. 주어진 functor 은 어떤 인자도 받아서는 안 됩니다.
이는 상태가 입력될 때만 실행되어야 하는 connectToState()의 핸들러를 래핑하는 데 유용합니다.
[static]
std::function<void (bool)> QScxmlStateMachine::onEntry(const QObject *receiver, const char *method)
부울 인수를 받아들이는 함수를 반환하고 인수가 true
이고 receiver 가 아직 삭제되지 않은 경우 QMetaObject::invokeMethod()를 사용하여 receiver 에서 주어진 method 을 호출합니다.
주어진 method 은 인수를 받지 않아야 합니다. method 은 SIGNAL()
또는 SLOT()
으로 묶지 않은 일반 메서드 이름입니다.
이는 상태가 입력될 때만 실행되어야 하는 connectToState()의 핸들러를 래핑하는 데 유용합니다.
[static]
template <typename PointerToMemberFunction> std::function<void (bool)> QScxmlStateMachine::onEntry(const typename QtPrivate::FunctionPointer<PointerToMemberFunction>::Object *receiver, PointerToMemberFunction method)
인수가 true
이고 receiver 이 아직 삭제되지 않은 경우, 부울 인수를 받아들이고 receiver 에서 주어진 method 을 호출하는 함수를 반환합니다. 주어진 method 은 어떤 인자도 받아서는 안 됩니다.
이는 상태가 입력되었을 때만 실행되어야 하는 connectToState()의 핸들러를 래핑하는 데 유용합니다.
[static]
template <typename Functor> std::function<void (bool)> QScxmlStateMachine::onExit(Functor functor)
부울 인수를 받아들이고 인수가 false
인 경우 주어진 functor 을 호출하는 함수를 반환합니다. 주어진 functor 은 어떤 인자도 받아서는 안 됩니다.
이는 상태가 남아있을 때만 실행되어야 하는 connectToState()의 핸들러를 래핑하는 데 유용합니다.
[static]
std::function<void (bool)> QScxmlStateMachine::onExit(const QObject *receiver, const char *method)
부울 인수를 받아들이는 함수를 반환하고 인수가 false
이고 receiver 가 아직 삭제되지 않은 경우 QMetaObject::invokeMethod()를 사용하여 receiver 에서 주어진 method 을 호출합니다.
주어진 method 은 어떤 인자도 받아서는 안 됩니다. method 은 SIGNAL(...) 또는 SLOT(...)으로 묶이지 않은 일반 메서드 이름입니다.
이는 상태가 남아있을 때만 실행되어야 하는 connectToState()에 대한 핸들러를 래핑하는 데 유용합니다.
[static]
template <typename PointerToMemberFunction> std::function<void (bool)> QScxmlStateMachine::onExit(const typename QtPrivate::FunctionPointer<PointerToMemberFunction>::Object *receiver, PointerToMemberFunction method)
인수가 false
이고 receiver 이 아직 삭제되지 않은 경우, 부울 인수를 받아들이고 receiver 에서 주어진 method 을 호출하는 함수를 반환합니다. 주어진 method 은 어떤 인자도 받아서는 안 됩니다.
이는 상태가 남아있을 때만 실행되어야 하는 connectToState()의 핸들러를 래핑하는 데 유용합니다.
[signal]
void QScxmlStateMachine::reachedStableState()
이 신호는 매크로 단계가 끝날 때 이벤트 대기열이 비어 있거나 최종 상태에 도달할 때 발생합니다.
[signal]
void QScxmlStateMachine::runningChanged(bool running)
이 신호는 running 인수를 사용하여 running
프로퍼티가 변경될 때 발생합니다.
참고: running 속성에 대한 알림 신호입니다.
void QScxmlStateMachine::setDataModel(QScxmlDataModel *model)
이 상태 머신의 데이터 모델을 model 로 설정합니다. 상태 머신과 모델 사이에는 1:1 관계가 있습니다. 모델을 한 번 설정하면 더 이상 변경할 수 없습니다. 이 메서드를 사용하여 모델을 설정하려는 추가 시도는 무시됩니다.
참고: 속성에 대한 세터 함수 dataModel.
dataModel()도 참조하세요 .
void QScxmlStateMachine::setRunning(bool running)
running 이 true
이면 상태 머신을 시작하고, 그렇지 않으면 중지합니다.
참고: running 속성에 대한 세터 함수.
start(), stop(), isRunning() 및 runningChanged()도 참조하세요 .
[slot]
void QScxmlStateMachine::start()
이 상태 머신을 시작합니다. 최종 최상위 상태가 입력되면 머신은 finished() 신호를 내보냅니다.
참고: 상태 머신은 QCoreApplication::exec() 또는 QApplication::exec()로 시작된 기본 애플리케이션 이벤트 루프와 같이 실행 중인 이벤트 루프가 없으면 실행되지 않습니다.
참고: stop() 뒤에 start()를 호출하면 아직 구성이 완전히 초기화되지 않으므로 이 작업을 수행하지 않는 것이 좋습니다.
참고: 완료된 머신을 시작하면 경고가 표시됩니다.
runningChanged(), setRunning(), stop() 및 finished()도 참조하세요 .
[invokable]
QStringList QScxmlStateMachine::stateNames(bool compress = true) const
모든 상태의 상태 이름 목록을 검색합니다.
compress 이 true
(기본값)인 경우 하위 상태를 포함하는 상태는 필터링되고 리프 상태만 반환됩니다. false
인 경우 모든 상태의 전체 목록이 반환됩니다.
반환된 목록에는 중첩 가능한 상태 머신의 상태는 포함되지 않습니다.
참고: 목록에 있는 상태 이름의 순서는 SCXML 문서에서 상태가 발생한 순서입니다.
참고: 이 함수는 메타 객체 시스템과 QML을 통해 호출할 수 있습니다. Q_INVOKABLE 을 참조하세요.
[slot]
void QScxmlStateMachine::stop()
이 상태 머신을 중지합니다. 머신은 더 이상 상태 전환을 실행하지 않습니다. running
속성은 false
으로 설정됩니다.
runningChanged(), start() 및 setRunning()도 참조하세요 .
[invokable]
void QScxmlStateMachine::submitEvent(QScxmlEvent *event)
이벤트의 우선순위에 따라 SCXML 이벤트 event 를 내부 또는 외부 이벤트 대기열에 제출합니다.
지연이 설정된 경우 이벤트는 시간 초과가 지난 후 전달을 위해 대기열에 대기합니다. 상태 머신은 event 의 소유권을 가져와 처리 후 삭제합니다.
참고: 이 함수는 메타객체 시스템과 QML을 통해 호출할 수 있습니다. Q_INVOKABLE 을 참조하세요.
[invokable]
void QScxmlStateMachine::submitEvent(const QString &eventName)
지정된 eventName 을 이름으로 하여 외부 이벤트를 생성하고 제출하는 유틸리티 메서드입니다.
참고: 이 함수는 메타객체 시스템과 QML을 통해 호출할 수 있습니다. Q_INVOKABLE 을 참조하세요.
[invokable]
void QScxmlStateMachine::submitEvent(const QString &eventName, const QVariant &data)
이름에 eventName, 페이로드 데이터에 data 을 지정하여 외부 이벤트를 생성하고 제출하는 유틸리티 메서드입니다.
참고: 이 함수는 메타객체 시스템과 QML을 통해 호출할 수 있습니다. Q_INVOKABLE 을 참조하세요.
© 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.