Menu QML Type

ネイティブ・メニュー。もっと見る...

Import Statement: import Qt.labs.platform
Inherits:

QtObject

プロパティ

シグナル

メソッド

詳細な説明

Menu 型はネイティブプラットフォームのメニューポップアップのための QML API を提供します。

MenuはMenuBar 、またはスタンドアロンのコンテキストメニューとして使用することができます。以下の例では、マウスの右クリックでコンテキストメニューを開く方法を示しています:

MouseArea {
    anchors.fill: parent
    acceptedButtons: Qt.RightButton
    onClicked: zoomMenu.open()
}

Menu {
    id: zoomMenu

    MenuItem {
        text: qsTr("Zoom In")
        shortcut: StandardKey.ZoomIn
        onTriggered: zoomIn()
    }

    MenuItem {
        text: qsTr("Zoom Out")
        shortcut: StandardKey.ZoomOut
        onTriggered: zoomOut()
    }
}

サブメニューを作成するには、Menuを他のMenuの子として宣言します:

Menu {
    title: qsTr("Edit")

    Menu {
        title: qsTr("Advanced")

        MenuItem {
            text: qsTr("Auto-indent Selection")
            onTriggered: autoIndentSelection()
        }

        MenuItem {
            text: qsTr("Rewrap Paragraph")
            onTriggered: rewrapParagraph()
        }
    }
}

メニュー項目の動的生成

Instantiator を使って、メニュー項目を動的に生成することができます。以下のコードでは、「最近使ったファイル」サブメニューを実装しています:

Menu {
    title: qsTr("File")

    Menu {
        id: recentFilesMenu
        title: qsTr("Recent Files")
        enabled: recentFilesInstantiator.count > 0

        Instantiator {
            id: recentFilesInstantiator
            model: settings.recentFiles
            delegate: MenuItem {
                text: settings.displayableFilePath(modelData)
                onTriggered: loadFile(modelData)
            }

            onObjectAdded: (index, object) => recentFilesMenu.insertItem(index, object)
            onObjectRemoved: (index, object) => recentFilesMenu.removeItem(object)
        }

        MenuSeparator {}

        MenuItem {
            text: qsTr("Clear Recent Files")
            onTriggered: settings.clearRecentFiles()
        }
    }
}

利用可能性

ネイティブ・プラットフォーム・メニューは現在、以下のプラットフォームで利用可能です:

  • macOS
  • iOS
  • アンドロイド
  • Linux (GTK+ プラットフォームテーマで動作している場合、スタンドアロンのコンテキストメニューとしてのみ利用可能です。)

Qt Labs Platform モジュールは、ネイティブな実装が利用できないプラットフォームでのフォールバックとして Qt ウィジェットを使用します。そのため、Qt Labs Platform モジュールの型を使用するアプリケーションは、QtWidgets にリンクし、QGuiApplication の代わりにQApplication を使用する必要があります。

QtWidgets ライブラリにリンクするには、qmake プロジェクトファイルに以下を追加します:

QT += widgets

main()QApplication のインスタンスを作成します:

#include <QApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    return app.exec();
}

注意: Qt.labs モジュールの型は、将来のバージョンでも互換性が保たれることを保証するものではありません。

MenuItemMenuSeparatorMenuBarも参照して ください。

プロパティ ドキュメント

data : list<QtObject> [default]

このデフォルト・プロパティは、メニューの子として宣言されたすべてのオブジェクトのリストを保持します。data プロパティには、TimerQtObject のような、MenuItem インスタンスではないオブジェクトも含まれます。

itemsも参照。


enabled : bool

このプロパティは、メニューが有効かどうかを保持する。デフォルト値はtrue である。


font : font

このプロパティはメニューのフォントを保持します。

titleも参照


icon group

icon.mask : bool [since Qt.labs.platform 1.1 (Qt 5.12)]

icon.name : string [since Qt.labs.platform 1.1 (Qt 5.12)]

icon.source : url [since Qt.labs.platform 1.1 (Qt 5.12)]

このプロパティは、メニュー項目のアイコンを保持します。

この QML プロパティは、Qt.labs.platform 1.1 (Qt 5.12) で導入されました。


items : list<MenuItem>

このプロパティは、メニューの項目のリストを保持します。


このプロパティは、メニューが属するメニューバーを保持します。メニューがメニューバーにない場合は、null


このプロパティは、(親メニューの)メニューを提示する項目を保持する。


minimumWidth : int

このプロパティはメニューの最小幅を保持する。デフォルト値は-1 (最小幅なし)である。


parentMenu : Menu [read-only]

このプロパティはメニューが属する親メニューを保持し、メニューがサブメニューでない場合はnull を保持する。


systemTrayIcon : SystemTrayIcon [read-only]

このプロパティはメニューが属するシステムトレイアイコンを保持し、メニューがシステムトレイアイコンにない場合はnull を保持する。


title : string

このプロパティはメニューのタイトルを保持する。


type : enumeration

このプロパティはメニューのタイプを保持する。

利用可能な値:

定数説明
Menu.DefaultMenu通常のメニュー(デフォルト)。
Menu.EditMenu切り取り、コピー、貼り付けの項目があらかじめ入力された編集メニュー。

visible : bool

このプロパティは、メニューが表示されているかどうかを保持します。デフォルト値はtrue


シグナル Documentation

aboutToHide()

このシグナルは、メニューがユーザーから隠されようとするときに発せられる。

注意: 対応するハンドラはonAboutToHide です。


aboutToShow()

このシグナルはメニューがユーザーに表示されようとするときに発せられる。

注: 対応するハンドラはonAboutToShow です。


メソッドの説明

void addItem(MenuItem item)

メニューの最後にitem を追加します。


void addMenu(Menu submenu)

メニューの最後にsubmenu を追加します。


void clear()

メニューからすべての項目を削除します。


void close()

メニューを閉じます。


void insertItem(int index, MenuItem item)

メニューの指定されたindexitem を挿入する。


void insertMenu(int index, Menu submenu)

メニュー内の指定されたindexsubmenu を挿入する。


void open(MenuItem item)

現在のマウス位置でメニューを開く。オプションでメニューitem に合わせる。


void open(Item target, MenuItem item)

item指定されたtarget 項目のメニューを開きます。


void removeItem(MenuItem item)

メニューからitem を削除する。


void removeMenu(Menu submenu)

メニューからsubmenu を削除する。


本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。