2016-06-17 29 views
7

Jak mogę mieć Menubars w QtQuick Controls 2? Kiedyś było tak (w ApplicationWindow):Menubary w QtQuick Controls 2

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

Ale po uaktualnieniu do Qt 5.7 daje ten błąd: Invalid property name "menuBar".(M16)

PS: używał natywnego systemu menu urządzenia, na przykład na OS X używał paska menu paska ekranu rodzimego, w systemie Linux i Windows używał natywnego paska menu paska górnego itp.

+1

Spróbuj podać pełny przykład ... Jaki jest Twój główny element? Jaki jest twój import? Jeśli używasz 'ApplicationWindow', właściwość wydaje się istnieć w 5.7 ... (http://doc.qt.io/qt-5.7/qml-qtquick-controls-applicationwindow.html#menuBar-prop). – maxik

Odpowiedz

1

Ta funkcja została wprowadzona dla Controls2 w Qt 5.10. Interfejs jest bardzo podobny, z wyjątkiem MenuItems zostały zastąpione przez bardziej uniwersalną akcję.

Documentation is here.

Zdaję sobie sprawę, że jest to stare pytanie, ale to może jeszcze być istotne dla przechodniów jak ja.

4

Urządzenie ApplicationWindow Qt Quick Controls 2 nie ma właściwość menuBar, została zastąpiona przez bardziej dostosowywalny header property, który akceptuje Item (ale już nie akceptuje MenuBar).

Qt Quick Controls 2 nie są przeznaczone do natywnej aplikacji komputerowej, ale mają oferować proste, wydajne i konfigurowalne komponenty. Na przykład w QQC2 używałbyś ToolBar lub TabBar jako header z ApplicationWindow.

Chociaż nie jest to udokumentowane, wydaje się, że posiadanie MenuBar jako dziecka z ApplicationWindow (zarówno w QQC1, jak i QQC2) ustawia natywny pasek menu na OS X (nie na Androidzie, ale nie przetestowałem go na innych platformach).

+0

Dzięki za informację, ale używam Qt, więc piszę raz i używam go wszędzie. Zadałem to samo pytanie na blogu Qt ogłaszając wydanie Qt 5.7 i to jest ich odpowiedź: http: //blog.qt.io/blog/2016/06/16/qt-5-7-released/# comment-1197915 – Sassan

6

Zgodnie z tym, co powiedział GrecKo, komputer nie jest głównym elementem tego modułu i jako część głównego importu nie można znaleźć sterowania MenuBar. Do niedawna używałem RowLayout, który zawiera kilka kontrolek ToolButton, z których każda otwiera Menu, aby emulować pasek menu dla aplikacji komputerowej.

Jednak moduł Qt.labs.platform był recently added, który dodaje obsługę natywnych elementów sterujących, takich jak MenuBar. Typy tego modułu są w pełni natywne, kosztem mniejszej możliwości dostosowania. Możesz już zacząć używać tych, jeśli sklonujesz gałąź dev qtquickcontrols2.git.

Nawiasem mówiąc, jeśli nie masz pewności co odpowiednik typu w QT Szybki Kontroluje 2 jest, tam jest „Type Tabela porównawcza” here (choć to unfortunately currently missingMenuBar).

+0

Cóż, używam Qt, aby móc pisać raz i używać go wszędzie. Byłem w stanie mieć natywne menuub na każdej platformie, która wspierała je QtQuick Controls 1. *. – Sassan

+0

Dzięki za informacje btw. – Sassan

+0

Czy 'Qt.labs.platform' jest dostępny w Qt 5.7? Nie wydaje się tak. –

2

I to samo pytanie na Qt blogu ogłasza wydaniu Qt 5.7 i jest to ich odpowiedź: http://blog.qt.io/blog/2016/06/16/qt-5-7-released/#comment-1197915

wydaje się więc, że powinniśmy poczekać na Qt 5.8 lub sklonować repo jako Mitch zaproponował w swojej odpowiedzi.

+0

Z posta na blogu [Qt Quick Controls 2.0 - nowy początek!] (Http://blog.qt.io/blog/2016/06/10/qt-quick-controls-2-0-a-new-beginning /): "W Qt Quick Controls 2 nie ma natywnych stylów - wszystkie style są wieloplatformowe i wyglądają tak samo na wszystkich platformach." Nie sądzę, że moduł Qt.labs.pl jest częścią Qt Quick Controls 2. Jeśli potrzebujesz natywnych elementów sterujących, trzymaj się Qt Quick Controls 1 (mieszając go z niektórymi Qt Quick Controls 2 w razie potrzeby). – GrecKo

+0

Czy przeczytałeś odpowiedź J-P Nurmi na mój komentarz? Wspomniany cytat mówi o stylach. Domyślam się, że obsługa natywnych menu lub ikonek w zasobniku lub takich rzeczy jest nieco inna niż style przycisków lub podobne rzeczy. A może zmienił nieco pomysł i dodał kilka wyjątków dla menuub, ikonek lub okien dialogowych. – Sassan

+1

Tak, zrobiłem, mówiłem tylko o QQC2. Uważam, że obsługa rodzimych platform nie będzie częścią QQC2, ale innego modułu. – GrecKo