私は複数の画面間で画面を切り替える必要があるアプリケーションがあります。 qmlのローダーでこれが可能かどうかを確認しています。Qt - ローダーソースが動的に変更された場合、ローダー項目からの信号を接続する方法
私が直面している問題は、読み込まれたアイテムからの信号を接続することです。
Qtのドキュメントでアプリケーション例を使用していて、アプリケーションqmlのCreateConnectionにif条件が含まれていないことがわかりました。
また、関数内でシグナルスロット接続を行い、ローダーのソース変更を呼び出すことも試みましたが、それも機能しませんでした。
Application.qml
import QtQuick 2.0
Item {
width: 100; height: 100
Loader {
id: myLoader
source: "MyItem.qml"
}
Connections {
target: myLoader.item
// here i tried using if (myLoader.item == "qrc:MyItemOne.qml") , but can't use if
onChangeToSecond: {
myLoader.source = "MyItemTwo.qml"
}
onChangeToFirst: {
myLoader.source = "MyItemOne.qml"
}
}
}
MyItemOne.qml
import QtQuick 2.0
Rectangle {
id: myItem
signal changeToSecond()
width: 100; height: 100
MouseArea {
anchors.fill: parent
onClicked: myItem.changeToSecond()
}
}
MyItemTwo.qml
import QtQuick 2.0
Rectangle {
id: myItem
signal changeToFirst()
width: 100; height: 100
MouseArea {
anchors.fill: parent
onClicked: myItem.changeToFirst()
}
}
誰かがこのためにローダーを使用する方法を知っている、またはローダは使用すべきではありませんこのため?
「ローダー」はこれには使用しないでください(少なくとも一般的ではありません)。複数の画面がある場合は、['StackView'](http://doc.qt.io/qt-5/qml-qt-labs-controls-stackview.html)を使用してください。 – BaCaRoZzo