저는 팀과 함께 프로젝트 작업을하고 있습니다. 내 임무는 임베디드 시스템 용 QML 및 C++로 Gui를 만드는 것입니다.QML 클릭하면보기가 변합니다.
각보기에는 qml 파일이 있습니다.
하지만 지금은 그들 사이를 탐색하고 싶습니다. 버튼을 클릭하면보기가 전환됩니다. 모든보기에는 뒤로 버튼이있어서 메인보기로 돌아갈 수 있습니다.
qml로 가능합니까? 내가
저는 팀과 함께 프로젝트 작업을하고 있습니다. 내 임무는 임베디드 시스템 용 QML 및 C++로 Gui를 만드는 것입니다.QML 클릭하면보기가 변합니다.
각보기에는 qml 파일이 있습니다.
하지만 지금은 그들 사이를 탐색하고 싶습니다. 버튼을 클릭하면보기가 전환됩니다. 모든보기에는 뒤로 버튼이있어서 메인보기로 돌아갈 수 있습니다.
qml로 가능합니까? 내가
C++로 해결해야 하지 않으면 당신은 QDeclarativeView
에서 C++에서 사용 파생 클래스를 만들 수 있습니다
void setSource (const QUrl & url)
현재 표시되는 QML 파일을 변경할 수 있습니다. 단추를 클릭 할 때이 메서드를 여러 번 호출 할 수 있습니다.
QML 만 사용하는 솔루션도 있습니다.
import QtQuick 1.0
Item {
width: 200; height: 200
Loader { id: pageLoader }
MouseArea {
anchors.fill: parent
onClicked: pageLoader.source = "Page1.qml"
}
}
또 다른 옵션은 당신이 그 QML 뷰의 인스턴스를 어디 주요 QML을 가지고, 당신은 상태를 사용하여 사이에서 변경 : 로더 요소에서 살펴 보자.
Main {
View1{id:viewid1}
View2{id:viewid2}
View3{id:viewid3}
states: [
State {
name: ""
},
State {
name: "view1"
PropertyChanges {target: viewid1; state: "focused"}
},
State {
name: "view2"
PropertyChanges {target: viewid2; state: "focused"}
...
}
]
}
이러한 옵션을 이미 제시 한 차이점이 하나가 영구적이다, 다른 요금 당신의 QML (구문 분석 및 인스턴스를 의미합니다 ...)마다.
감사 답변 : 내 일 저장 – demonking
봐 이 솔루션과 @JuliusG의 솔루션의 또 다른 차이점은 시작시에이 솔루션이 모든 QML을 인스턴스화하는 반면 솔루션은 소스가 변경 될 때 각 QML 페이지를 인스턴스화한다는 것입니다. 이것은 귀하의 응용 요구에 따라 도움이되거나 유해 할 수 있습니다. – stackunderflow
한 답변에 대한
import QtQuick 2.1
import QtQuick.Controls 1.1
import QtQuick.Window 2.1
ApplicationWindow {
title: qsTr("My super app")
width: 640
height: 480
Button {
id: settingsButton
x: 370
y: 0
text: qsTr("Settings")
/* just change `visible` property by click */
onClicked: {
statusView.visible = false
settingsView.visible = true
}
}
Button {
id: statusButton
x: 171
y: 0
text: "Status"
/* toggle */
onClicked: {
statusView.visible = true
settingsView.visible = false
}
}
Item {
/* use id for access */
id: statusView
x: 0
y: 50
width: 640
height: 430
/* visible: true */
Text {
anchors.centerIn: parent
text: "status"
}
}
Item {
id: settingsView
x: 0
y: 50
width: 640
height: 430
/* invisible */
visible: false
Text {
anchors.centerIn: parent
text: "settings"
}
}
}
감사! 가장 실용적인 :-) –
감사 JuliusG은,하지만 난 모든에가 있어야 버전에 생각보다 예는 로더보기? 아니면 pageloader가 내가 그것을 의미하는 것을 알고 있습니까? – demonking
각 파일에 로더를 추가 할 필요가 없습니다. 하나의 로더로 주요 qml을 가질만큼 충분하며 각보기에서 버튼을 클릭 할 때마다 내용을 변경할 수 있습니다. 로드 된 뷰의 데이터를 main qml로 전달하려면 메인에있는 메소드를 호출 할 수 있습니다. – JuliusG
덕분에 나는 그것을 테스트 한 : 하지만 난 QDeclarativeView은 톤 @JuliusG 의견이 – demonking