2016-06-17 15 views
7

Wie kann ich Menubars in QtQuick Controls 2 haben? Früher war es so sein (in Application):Menubars in QtQuick Controls 2

menuBar: MenuBar { 
    Menu { 
     title: qsTr('File') 
     MenuItem { 
      text: qsTr('&Test') 
      onTriggered: console.log('test') 
     } 
     MenuItem { 
      text: qsTr('&Exit') 
      onTriggered: Qt.quit(); 
     } 
    } 
} 

Aber nach zu Qt 5.7 Upgrade gibt es diesen Fehler: Invalid property name "menuBar".(M16)

P. S. es verwendet, um geräteeigenen Menüsystem zu verwenden, zum Beispiel auf sie nativen OS X-Bildschirm topbar menubar verwendet, auf Linux und Windows es nativen topbar menubar in Anwendung, etc. verwendet

+1

Bitte versuchen Sie ein komplettes Beispiel zu veröffentlichen ... Was ist Ihr Wurzelelement? Was sind deine Importe? Wenn Sie 'ApplicationWindow' verwenden, scheint die Eigenschaft in 5.7 ... (http://doc.qt.io/qt-5.7/qml-qtquick-controls-applicationwindow.html#menuBar-prop) vorhanden zu sein. – maxik

Antwort

1

Diese Funktionalität wurde für Controls2 in Qt 5.10 eingeführt. Die Benutzeroberfläche ist sehr ähnlich, außer dass MenuItems durch die universellere Aktion ersetzt wurden.

Documentation is here.

Ich weiß, das eine alte Frage, aber das könnte noch für die Passanten wie mich relevant sein.

4

Die ApplicationWindow von Qt Quick Controls 2 nicht hat eine menuBar Eigenschaft, wurde es durch eine anpassungsfähigere header property ersetzt, die Item akzeptiert (aber es akzeptiert MenuBar nicht mehr).

Qt Quick Controls 2 sind nicht als native Desktop-Anwendung gedacht, sondern sollen einfache, effiziente und anpassbare Komponenten bieten. Zum Beispiel würden Sie in QQC2 einen ToolBar oder einen TabBar als header eines ApplicationWindow verwenden.

Obwohl es nicht dokumentiert ist, scheint es, dass nur als Kind eines ApplicationWindow ein MenuBar mit (in beiden QQC1 und QQC2) setzt die native Menüleiste auf OS X (nicht auf Android aber, und ich habe es nicht getestet auf anderen Plattformen).

+0

Danke für Info, aber ich benutze Qt, so dass ich einmal schreibe und es überall benutze. Ich stellte die gleiche Frage auf Qt Blog Ankündigung Qt 5.7 Release und das ist ihre Antwort: http: //blog.qt.io/blog/2016/06/16/qt-5-7-released/# comment-1197915 – Sassan

6

Wie GrecKo sagte, Desktop ist nicht der Fokus des Moduls, und als solche finden Sie keine MenuBar Kontrolle als Teil des Hauptimports. Bis vor kurzem habe ich eine RowLayout verwendet, die eine Reihe von Steuerelementen enthält, von denen jedes eine Menu öffnet, um eine Menüleiste für eine Desktopanwendung zu emulieren.

Das Modul Qt.labs.platform war jedoch recently added, das Unterstützung für native Steuerelemente wie MenuBar hinzufügt. Die Typen in diesem Modul sind vollständig nativ, auf Kosten einer geringeren Anpassbarkeit. Sie können diese bereits verwenden, wenn Sie den Dev-Zweig qtquickcontrols2.git klonen.

By the way, wenn Sie sich unsicher sind, was die entsprechende Art in Qt Quick Controls 2 ist, gibt es eine "Type Vergleichstabelle" here (obwohl es unfortunately currently missingMenuBar ist).

+0

Nun, ich benutze Qt, so dass ich einmal schreiben und es überall verwenden kann. Ich konnte auf jeder Plattform, die QtQuick Controls 1 unterstützt, native Menübars haben. *. – Sassan

+0

Danke für info btw. – Sassan

+0

Ist 'Qt.labs.platform' in Qt 5.7 verfügbar? So scheint es nicht. –

2

fragte ich die gleiche Frage auf Qt Blog kündigt Veröffentlichung von Qt 5.7 und das ist ihre Antwort: http://blog.qt.io/blog/2016/06/16/qt-5-7-released/#comment-1197915

scheint also, dass wir entweder für Qt 5.8 oder klonen den Repo warten soll, als Mitch in seiner Antwort vorgeschlagen.

+0

Aus dem Blogpost [Qt Quick Controls 2.0 - ein Neuanfang!] (Http://blog.qt.io/blog/2016/06/10/qt-quick-controls-2-0-a-new-beginning /): "In Qt Quick Controls 2 gibt es keine nativen Stile - alle Stile sind plattformübergreifend und sehen auf allen Plattformen gleich aus." Ich denke nicht, dass das Qt.labs.platform Modul Teil der Qt Quick Controls 2 ist. Wenn Sie native Kontrollen wünschen, bleiben Sie bei Qt Quick Controls 1 (mischen Sie es mit einigen Qt Quick Controls 2 bei Bedarf). – GrecKo

+0

Haben Sie J-P Nurmis Antwort auf meinen Kommentar gelesen? Das Zitat, das Sie erwähnten, spricht über Stile. Ich denke, die Unterstützung der nativen Menüleiste oder der Taskleistensymbole oder anderer Dinge ist etwas anders als die Stile der Buttons oder solche Dinge. Oder vielleicht hat er seine Idee ein wenig geändert und einige Ausnahmen für Menüleisten, Tray-Icons oder Dialoge hinzugefügt. – Sassan

+1

Ja, ich habe nur über QQC2 gesprochen. Ich glaube, dass die Unterstützung für native Plattformmenüs nicht Teil von QQC2, sondern eines anderen Moduls sein wird. – GrecKo