我是QT的新手,想为树莓派及其触控式液晶显示器开发QT Quick应用程序。该应用程序应该有几个屏幕(对不起,不知道什么是正确的术语,屏幕我的意思是应用程序的状态填充Raspberry Pi的整个显示),应该有按钮在这些屏幕之间切换。当我按下按钮时,如何切换到不同的屏幕?
我尝试使用loader但是(现在我正在桌面而不是Raspberry上测试)它在新窗口中打开qml文件,但我希望替换原始窗口的内容。
编辑: 是的,我计划使用EGLFS。我附上了一些原则上我想要的代码。但是,我不确定这是否是正确的做事方式:我将我想要的屏幕放入他们自己的qml文件中,并通过鼠标区域按钮切换其可见性:
main.qml
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
ApplicationWindow {
visible: true
width: 800
height: 460
title: qsTr("Hello World")
Page1 {
id: page1
visible: true
}
Page2 {
id: page2
visible: false
}
}
Page1.qml
import QtQuick 2.7
import QtQuick.Controls 2.0
Item {
Button {
id: button1
width: 200
height: 40
text: qsTr("To second page")
onClicked: {
page2.visible=true
page1.visible=false
}
}
}
Page2.qml
import QtQuick 2.3
import QtQuick.Window 2.2
Item {
Text {
id: text1
x: 181
y: 153
text: qsTr("Second Page")
font.pixelSize: 12
}
Rectangle {
id: rectangle
x: 252
y: 222
width: 200
height: 200
color: "#000000"
border.color: "#f12525"
}
MouseArea {
id: mouseArea
x: 234
y: 209
width: 244
height: 225
onClicked:{
page1.visible=true
page2.visible=false
}
}
}
答案 0 :(得分:-1)
我冒昧地猜测你很可能想在树莓派上使用Qt5的eglfs模式。这摆脱了普通的桌面并全屏运行你的Qt5(常规或QML)应用程序。当我上次这样做时,我需要自己编译Qt5。这是您要么想要交叉编译的东西,或者使用RaspberryPi 3(如果需要,可以将结果复制到较慢的Raspberry Pis)。我在https://wiki.qt.io/RaspberryPi2EGLFS
指南工作然后在带有触摸屏的Raspberry Pi(特殊的7"屏幕或通用的22"触摸显示屏)上的Linux桌面或全屏幕上运行程序是非常简单的。 / p>
使用eglfs的新外观显然是QtWayland Compositor。我还没有使用它,但有一个有趣的演示文稿,用于最近(2017年)FOSDEM的全屏嵌入式应用程序,可在此处找到:https://fosdem.org/2017/schedule/event/device_specific_compositors/