2017-05-05 16 views
-1

Ich bin neu in QT und möchte eine QT Quick App für die Raspberry Pi und ihr Touch-LCD-Display zu entwickeln. Die App sollte mehrere Bildschirme haben (Entschuldigung, nicht sicher, was die richtige Terminologie ist, mit Bildschirm meine ich einen Zustand der App, die die gesamte Anzeige des Raspberry Pi füllt) und es sollte Tasten geben, um zwischen diesen Bildschirmen zu wechseln. Wie ist es möglich auf einen anderen Bildschirm zu wechseln, wenn ich einen Knopf drücke?QtQuick einfache App für Raspberry

Ich versuchte mit loader aber (im Moment teste ich auf dem Desktop nicht den Raspberry) es öffnet die qml-Datei in einem neuen Fenster, aber ich möchte den Inhalt des ursprünglichen Fensters ersetzt haben.

Bearbeiten: Ja, ich plane mit EGLFS. Ich füge einen Code bei, der prinzipiell das macht, was ich will. Ich bin aber nicht sicher, ob dies der richtige Weg ist, die Dinge zu tun: ich die Bildschirme habe ich selbst in die qml Datei haben wollen, und wechseln ihre Sichtbarkeit durch Tasten unsere Maus Bereiche:

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

Sie könnten Ihren Code zeigen, auch bitte genau in Ihrer Frage , zuerst sprechen Sie über Himbeere nach dem Desktop, betrachten Sie die Version von qt in beiden, normalerweise wird es funktionieren, aber für Probleme der Versionen werden Sie nicht alle Bestandteile in Himbeere haben. – eyllanesc

+0

Ich habe keinen Code geschrieben, weil ich gerade verloren bin. Mit Quick Controls gibt es Dinge wie StackView, wäre das angemessen? Oder ist es einfacher, Loader oder States zu verwenden? In Bezug auf Raspberry und Desktop: Am Ende sollte die Anwendung auf dem Raspberry laufen, aber gerade entwickle ich auf meinem Desktop. Ich habe es nur erwähnt, weil ein Problem mit dem Loader-Ansatz darin bestand, dass neue Fenster geöffnet wurden, aber auf dem Raspberry könnte sich das anders verhalten. – numberCruncher

+0

Ihre Frage ist breit und das ist off-topic in SO, lesen [this] (https://stackoverflow.com/help/mcve), um Ihre Frage zu verbessern. – eyllanesc

Antwort

-1

wage ich würde t zu erraten Am ehesten möchtest du den eglfs-Modus von Qt5 auf dem Raspberry Pi verwenden. Dies wird den normalen Desktop los und führt Ihre Qt5 (reguläre oder QML) App im Vollbildmodus aus. Als ich das letzte Mal getan habe, musste ich selbst Qt5 kompilieren. Das ist etwas, für das Sie entweder Cross-Compiling herausfinden oder ein RaspberryPi 3 verwenden möchten (die Ergebnisse können dann auf langsamere Raspberry Pis kopiert werden, falls gewünscht). Ich arbeitete von der Anleitung bei https://wiki.qt.io/RaspberryPi2EGLFS

Es war ziemlich trivial, das Programm dann in einem Fenster auf einem Linux-Desktop oder Vollbild auf einem Raspberry Pi mit Touchscreen (sowohl die spezielle 7 "Bildschirm oder eine generische 22" Touch Anzeige).

Eine neuere Alternative zur Verwendung von eglfs ist anscheinend der QtWayland Compositor. Ich habe es nicht verwendet, aber es gibt eine interessante Präsentation über die Verwendung für Vollbild-Embedded-Anwendungen aus dem neuesten (2017) FOSDEM, hier erhältlich: https://fosdem.org/2017/schedule/event/device_specific_compositors/