2016-06-17 20 views
7

Come posso avere Menubars in QtQuick Controls 2? Ha usato per essere come questo (in ApplicationWindow):Menubar 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(); 
     } 
    } 
} 

Ma dopo l'aggiornamento a Qt 5.7 dà questo errore: Invalid property name "menuBar".(M16)

P.S. utilizzava il sistema di menu nativo del dispositivo, per esempio su OS X utilizzava la barra dei menu superiore della schermata nativa, su Linux e Windows utilizzava nativa nella barra dei menu topbar dell'applicazione, ecc.

+1

Si prega di provare a pubblicare un esempio completo ... Qual è il tuo elemento principale? Quali sono le tue importazioni? Se si utilizza 'ApplicationWindow' la proprietà sembra esistere in 5.7 ... (http://doc.qt.io/qt-5.7/qml-qtquick-controls-applicationwindow.html#menuBar-prop). – maxik

risposta

1

Questa funzionalità è stata introdotta per Controls2 in Qt 5.10. L'interfaccia è molto simile, tranne che i MenuItem sono stati sostituiti dall'azione più universale.

Documentation is here.

Mi rendo conto che è una vecchia questione, ma questo potrebbe essere ancora rilevante per i passanti come me.

4

Il ApplicationWindow di Qt Quick Controls 2 non ha una proprietà menuBar, è stata sostituita da una più personalizzabile header property che accetta Item (ma non accetta più MenuBar).

Qt Quick Controls 2 non sono pensati per offrire un'applicazione desktop nativa, ma sono pensati per offrire componenti semplici, efficienti e personalizzabili. Ad esempio in QQC2 verrà utilizzato uno ToolBar o uno TabBar come header di uno ApplicationWindow.

Anche se non è documentato, sembra che solo avere un MenuBar come figlio di un ApplicationWindow (sia QQC1 e QQC2) imposta la barra dei menu nativo su OS X (non su Android, però, e non ho provato su altre piattaforme).

+0

Grazie per le informazioni, ma sto usando Qt per scrivere una volta e usarlo ovunque. Ho fatto la stessa domanda sul blog Qt che annunciava la release Qt 5.7 e questa è la loro risposta: http: //blog.qt.io/blog/2016/06/16/qt-5-7-released/# comment-1197915 – Sassan

6

Come diceva GrecKo, il desktop non è il fulcro del modulo e, come tale, non è possibile trovare un controllo MenuBar come parte dell'importazione principale. Fino a poco tempo fa, ho utilizzato uno RowLayout che contiene un gruppo di controlli ToolButton, ognuno dei quali apre uno Menu, per emulare una barra dei menu per un'applicazione desktop.

Tuttavia, il modulo Qt.labs.platform era recently added, che aggiunge il supporto per i controlli nativi come MenuBar. I tipi in questo modulo sono completamente nativi, a scapito di una minore personalizzazione. Puoi già iniziare a usarli se cloni il ramo dev di qtquickcontrols2.git.

A proposito, se siete sempre sicuri di quale tipo equivalente in Qt rapida Controlli 2 è, c'è un "Tipo di tabella di confronto" here (anche se è unfortunately currently missingMenuBar).

+0

Bene Sto usando Qt in modo che io possa scrivere una volta e usarlo ovunque. Sono stato in grado di avere una barra dei menu nativa in ogni piattaforma che supportava QtQuick Controls 1. *. – Sassan

+0

Grazie per le informazioni btw. – Sassan

+0

'Qt.labs.platform' è disponibile in Qt 5.7? Non sembra così. –

2

ho chiesto la stessa domanda su Qt blog annunciando il rilascio di Qt 5.7 e questa è la loro risposta: http://blog.qt.io/blog/2016/06/16/qt-5-7-released/#comment-1197915

Così sembra che si debba attendere che Qt 5.8 o clonare il repo come Mitch ha suggerito nella sua risposta.

+0

Dal post del blog [Qt Quick Controls 2.0 - un nuovo inizio!] (Http://blog.qt.io/blog/2016/06/10/qt-quick-controls-2-0-a-new-beginning /): "Non ci sono stili nativi in ​​Qt Quick Controls 2 - tutti gli stili sono multipiattaforma e sembrano uguali su tutte le piattaforme." Non penso che il modulo Qt.labs.platform sia parte dei Qt Quick Controls 2. Se vuoi controlli nativi, usa Qt Quick Controls 1 (mescolandolo con alcuni Qt Quick Controls 2 quando necessario). – GrecKo

+0

Hai letto la risposta di J-P Nurmi al mio commento? La citazione che hai menzionato parla di stili. Immagino che supportare la barra dei menu nativa o le icone dei vassoi o cose del genere sia leggermente diverso dagli stili del pulsante o cose del genere. O forse ha cambiato un po 'la sua idea e ha aggiunto alcune eccezioni per la barra dei menu, le icone dei vassoi o i dialoghi. – Sassan

+1

Sì, l'ho fatto, stavo solo parlando di QQC2. Credo che il supporto per i menu nativi della piattaforma non farà parte di QQC2 ma di un altro modulo. – GrecKo

Problemi correlati