适用于Raspberry的QtQuick简单应用

时间:2017-05-05 16:38:00

标签: qt qml qt-quick

我是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
        }
    }
}

1 个答案:

答案 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/