このページでは

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
  • Android
  • Linux(GTK+プラットフォームテーマで実行する場合に限り、スタンドアロンのコンテキストメニューとして利用可能)

Qt Labs Platform モジュールは、ネイティブの実装が利用できないプラットフォームにおいて、フォールバックとしてQt Widgets を使用します。したがって、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モジュール内の型は、将来のバージョンでも互換性が維持されるとは限りません。

MenuItem 、MenuSeparator 、およびMenuBarも参照してください 。

プロパティのドキュメント

data : list<QtObject> [default]

このデフォルトのプロパティには、メニューの子として宣言されたすべてのオブジェクトのリストが格納されます。data プロパティには、Timer やQtObject など、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)]

このプロパティには、メニュー項目のアイコンが格納されます。

これらのプロパティは、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 です。

シグナルのドキュメント

aboutToHide()

このシグナルは、メニューがユーザーから非表示になろうとする際に発せられます。

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

aboutToShow()

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

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

メソッドのドキュメント

void addItem(MenuItem item)

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

void addMenu(Menu submenu)

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

void clear()

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

void close()

メニューを閉じます。

void insertItem(int index, MenuItem item)

メニュー内の指定されたindex に「item 」を挿入します。

void insertMenu(int index, Menu submenu)

メニュー内の指定されたindex に、submenu を挿入します。

void open(MenuItem item)

マウスの現在位置にメニューを開きます。必要に応じて、メニューをitem に合わせることができます。

void open(Item target, MenuItem item)

指定されたtarget 項目でメニューを開き、必要に応じてメニューのitem に合わせて配置します。

void removeItem(MenuItem item)

メニューから「item 」を削除します。

void removeMenu(Menu submenu)

メニューから「submenu 」を削除します。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.