12

QtQuick Controls 2 でメニューバーを使用するにはどうすればよいですか? 以前は次のようでした (ApplicationWindow 内):

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

しかし、Qt 5.7 にアップグレードすると、次のエラーが発生します。Invalid property name "menuBar".(M16)

PS デバイスのネイティブ メニュー システムを使用していました。

4

5 に答える 5

7

MenuBarが利用可能になり、Qt 5.10 で追加されました。QtQuick.Controls バージョン 2.3 以降を使用します。

import QtQuick.Controls 2.3

古い答え:

GrecKo が言ったように、デスクトップはモジュールの焦点では​​ないためMenuBar、メインのインポートの一部としてコントロールは見つかりません。最近まで、デスクトップ アプリケーションのメニュー バーをエミュレートするために、それぞれが を開くRowLayout一連のコントロールを含むを使用していました。ToolButtonMenu

ただし、Qt.labs.platformモジュールが最近追加され、 のようなネイティブ コントロールのサポートが追加されましMenuBarた。このモジュールの型は完全にネイティブですが、カスタマイズ性は低くなります。の dev ブランチを複製すれば、これらの使用をすでに開始できますqtquickcontrols2.git

ちなみに、Qt Quick Controls 2 の同等の型がわからない場合は、ここに「型比較表」があります(ただし、残念ながら現在は MenuBarありません)。

于 2016-06-17T08:42:25.320 に答える
6

Qt 5.7 のリリースを発表したQtブログで同じ質問をしました。

Qt 5.8 を待つか、ミッチが回答で提案したようにレポを複製する必要があるようです。

アップデート

これは Qt Quick Controls 2 に実装されました: https://doc.qt.io/qt-5.10/qml-qtquick-controls2-menubar.html

于 2016-06-17T10:26:40.303 に答える
4

ApplicationWindowQt Quick Controls 2 にはプロパティがありません。よりカスタマイズ可能なプロパティmenuBar置き換えられました(ただし、受け入れられなくなりました)。headerItemMenuBar

Qt Quick Controls 2 は、ネイティブ デスクトップ アプリケーションを提供するためのものではなく、シンプルで効率的でカスタマイズ可能なコンポーネントを提供するためのものです。たとえば、QQC2 では、ToolBarまたはを anのTabBarとして使用します。headerApplicationWindow

文書化されていませんMenuBarが、(QQC1 と QQC2 の両方で) の子として aを持つだけでApplicationWindow、OS X のネイティブ メニュー バーが設定されるようです (ただし、Android ではなく、他のプラットフォームではテストしていません)。

于 2016-06-17T08:28:09.607 に答える
2

この機能は、Qt 5.10 の Controls2 に導入されました。インターフェースは非常に似ていますが、MenuItems がより普遍的な Action に置き換えられています。

ドキュメントはこちらです。

これは古い質問だと思いますが、これは私のような通行人にはまだ関係があるかもしれません.

于 2018-01-21T09:58:29.203 に答える