QMenu Class

QMenu クラスは、メニューバーやコンテキストメニュー、その他のポップアップメニューで使用するメニューウィジェットを提供します。詳細...

Header: #include <QMenu>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: QWidget

プロパティ

パブリック関数

QMenu(QWidget *parent = nullptr)
QMenu(const QString &title, QWidget *parent = nullptr)
virtual ~QMenu()
QAction *actionAt(const QPoint &pt) const
QRect actionGeometry(QAction *act) const
QAction *activeAction() const
QAction *addMenu(QMenu *menu)
QMenu *addMenu(const QString &title)
QMenu *addMenu(const QIcon &icon, const QString &title)
QAction *addSection(const QString &text)
QAction *addSection(const QIcon &icon, const QString &text)
QAction *addSeparator()
void clear()
QAction *defaultAction() const
QAction *exec()
QAction *exec(const QPoint &p, QAction *action = nullptr)
void hideTearOffMenu()
QIcon icon() const
QAction *insertMenu(QAction *before, QMenu *menu)
QAction *insertSection(QAction *before, const QString &text)
QAction *insertSection(QAction *before, const QIcon &icon, const QString &text)
QAction *insertSeparator(QAction *before)
bool isEmpty() const
bool isTearOffEnabled() const
bool isTearOffMenuVisible() const
QAction *menuAction() const
void popup(const QPoint &p, QAction *atAction = nullptr)
bool separatorsCollapsible() const
void setActiveAction(QAction *act)
void setAsDockMenu()
void setDefaultAction(QAction *act)
void setIcon(const QIcon &icon)
void setSeparatorsCollapsible(bool collapse)
void setTearOffEnabled(bool)
void setTitle(const QString &title)
void setToolTipsVisible(bool visible)
void showTearOffMenu(const QPoint &pos)
void showTearOffMenu()
QString title() const
NSMenu *toNSMenu()
bool toolTipsVisible() const

再実装パブリック関数

virtual QSize sizeHint() const override

シグナル

void aboutToHide()
void aboutToShow()
void hovered(QAction *action)
void triggered(QAction *action)

静的パブリックメンバ

QAction *exec(const QList<QAction *> &actions, const QPoint &pos, QAction *at = nullptr, QWidget *parent = nullptr)
QMenu *menuInAction(const QAction *action)

保護された関数

int columnCount() const
virtual void initStyleOption(QStyleOptionMenuItem *option, const QAction *action) const

再実装された保護された関数

virtual void actionEvent(QActionEvent *e) override
virtual void changeEvent(QEvent *e) override
virtual void enterEvent(QEnterEvent *) override
virtual bool event(QEvent *e) override
virtual bool focusNextPrevChild(bool next) override
virtual void hideEvent(QHideEvent *) override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void leaveEvent(QEvent *) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *e) override
virtual void timerEvent(QTimerEvent *e) override
virtual void wheelEvent(QWheelEvent *e) override

詳しい説明

メニューウィジェットは選択メニューです。メニューバー内のプルダウンメニューであったり、独立したコンテキストメニューであったりします。プルダウンメニューは、ユーザーがそれぞれの項目をクリックするか、指定されたショートカットキーを押すと、メニューバーに表示されます。メニューバーにメニューを挿入するには、QMenuBar::addMenu ()を使用します。コンテキスト・メニューは通常、特別なキーボード・キーや右クリックによって呼び出されます。コンテキスト・メニューは、popup() で非同期的に実行することも、exec() で同期的に実行することもできる。メニューはボタンの押下に応じて呼び出すこともできます。呼び出す方法以外はコンテキストメニューと同じです。

アクション

メニューはアクションアイテムのリストから構成されます。アクションはaddAction()、addActions()、insertAction()関数で追加します。アクションは縦書きで表現され、QStyle でレンダリングされます。さらに、アクションはテキスト・ラベル、左端に描画されるオプションのアイコン、および "Ctrl+X" のようなショートカット・キー・シーケンスを持つことができます。

メニューが持つ既存のアクションは、actions()で見つけることができます。

セパレーター、サブメニューを表示するアクション、ウィジェット、アクションを実行するアクションです。セパレーターはaddSeparator()で挿入され、サブメニューはaddMenu()で挿入され、その他のアイテムはすべてアクションアイテムとみなされます。

アクションアイテムを挿入する場合、通常はレシーバーとスロットを指定します。アイテムがtriggered() されるたびに、レシーバーに通知が送られます。さらに、QMenu にはtriggered() とhovered() という 2 つのシグナルがあり、メニューからトリガーされたQAction をシグナルします。

clear ()でメニューをクリアし、removeAction ()で個々のアクション・アイテムを削除します。

QMenu はティア・オフ・メニューを提供することもできます。ティア・オフ・メニューは、メニューのコピーを含むトップ・レベルのウィンドウです。これにより、ユーザーは頻繁に使用するメニューを "ティア・オフ "して、スクリーン上の便利な場所に配置することができます。特定のメニューにこの機能が必要な場合は、setTearOffEnabled() でティアオフ・ハンドルを挿入してください。ティアオフ・メニューを使用する場合、この概念はMicrosoft Windowsでは一般的に使用されていないため、一部のユーザーには馴染みがないかもしれないことに留意してください。代わりにQToolBar

ウィジェットはQWidgetAction クラスを使ってメニューに挿入することができます。このクラスのインスタンスはウィジェットを保持するために使用され、QAction を受け取る addAction() オーバーロードでメニューに挿入されます。QWidgetActiontriggered() シグナルを発生させると、メニューは閉じます。

警告 QMenuをスクリーンに表示するには、show() またはsetVisible() の代わりに、exec() またはpopup() を使用する必要があります。メニューバーやサブメニューとして追加された他のメニューでメニューを非表示にしたり無効にしたりするには、menuAction() のプロパティを使用してください。

Cocoaに対するQtビルドを使用したmacOS上のQMenu

QMenuはメニュー/メニューバーに一度だけ挿入できます。それ以降の挿入は効果がないか、無効になります。

アプリケーションでQMenuBar と QMenu を使用する方法の例については、Menus の例を参照してください。

重要な継承関数:addAction()、removeAction()、clear()、addSeparator()、addMenu()。

QMenuBar およびMenus Exampleも参照してください

プロパティ・ドキュメンテーション

icon : QIcon

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

これはmenuAction() のQAction::icon プロパティと同等です。

デフォルトでは、アイコンが明示的に設定されていない場合、このプロパティには null アイコンが格納される。

アクセス関数:

QIcon icon() const
void setIcon(const QIcon &icon)

separatorsCollapsible : bool

このプロパティは、連続する区切り文字を折りたたむかどうかを指定します。

このプロパティは、メニュー内の連続したセパレータを視覚的に1つに折りたたむかどうかを指定します。メニューの先頭または末尾のセパレータも非表示になる。

デフォルトでは、このプロパティはtrue です。

アクセス機能:

bool separatorsCollapsible() const
void setSeparatorsCollapsible(bool collapse)

tearOffEnabled : bool

このプロパティは、メニューが引き裂かれることをサポートするかどうかを保持します。

trueの場合、メニューは特別なtear-off項目(しばしばメニューの上部に破線で表示される)を含み、それがトリガーされるとメニューのコピーが作成される。

この "torn-off "コピーは別ウィンドウで表示されます。引き裂きハンドルを除いて、元のメニューと同じメニュー項目が含まれます。

デフォルトでは、このプロパティはfalse です。

アクセス関数:

bool isTearOffEnabled() const
void setTearOffEnabled(bool)

title : QString

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

これはmenuAction() のQAction::text プロパティと同等です。

デフォルトでは、このプロパティには空の文字列が格納される。

アクセス関数:

QString title() const
void setTitle(const QString &title)

toolTipsVisible : bool

このプロパティは、メニュー・アクションのツールチップを表示するかどうかを指定します。

このプロパティは、アクションメニュー項目にツールチップを表示するかどうかを指定します。

デフォルトでは、このプロパティはfalse です。

アクセス関数:

bool toolTipsVisible() const
void setToolTipsVisible(bool visible)

メンバー関数ドキュメント

[explicit] QMenu::QMenu(QWidget *parent = nullptr)

親を持つメニューを構築するparent

ポップアップメニューは常にトップレベルのウィジェットですが、親が渡された場合、その親が破棄されるとポップアップメニューは削除されます(他のQObject と同様)。

[explicit] QMenu::QMenu(const QString &title, QWidget *parent = nullptr)

titleparent でメニューを構築します。

ポップアップメニューは常にトップレベルのウィジェットですが、親が渡された場合、その親が破棄されるとポップアップメニューは削除されます(他のQObject と同様)。

titleも参照して ください。

[virtual noexcept] QMenu::~QMenu()

メニューを破棄します。

[signal] void QMenu::aboutToHide()

このシグナルは、メニューがユーザーから隠される直前に発せられます。

aboutToShow() およびhide() も参照

[signal] void QMenu::aboutToShow()

このシグナルは、メニューがユーザーに表示される直前に発せられる。

aboutToHide() およびshow() も参照の こと。

QAction *QMenu::actionAt(const QPoint &pt) const

pt にあるアイテムを返す。そこにアイテムがない場合はnullptr を返す。

[override virtual protected] void QMenu::actionEvent(QActionEvent *e)

再実装:QWidget::actionEvent(QActionEvent *event)。

QRect QMenu::actionGeometry(QAction *act) const

アクションact のジオメトリを返します。

QAction *QMenu::activeAction() const

現在ハイライトされているアクションを返し、現在ハイライトされているアクションがない場合はnullptr を返します。

setActiveAction()も参照

QAction *QMenu::addMenu(QMenu *menu)

この便利な関数はmenu をサブメニューとして追加する。この関数はmenumenuAction() を返す。このメニューはmenu の所有権を持たない。

QWidget::addAction() およびQMenu::menuAction() も参照

QMenu *QMenu::addMenu(const QString &title)

title を持つ新しいQMenu をメニューに追加する。この menu はその所有権を持つ。新しいメニューを返す。

QWidget::addAction() およびQMenu::menuAction() も参照

QMenu *QMenu::addMenu(const QIcon &icon, const QString &title)

icontitle を持つ新しいQMenu を menu に追加する。menu はその所有権を持つ。新しいメニューを返す。

QWidget::addAction() およびQMenu::menuAction() も参照

QAction *QMenu::addSection(const QString &text)

この便利な関数は新しいセクションアクション、すなわちQAction::isSeparator() が true を返し、かつtext ヒントを持つアクションを作成し、新しいアクションをこのメニューのアクションリストに追加する。この関数は新しく作成されたアクションを返します。

ヒントのレンダリングはスタイルとプラットフォームに依存します。ウィジェットスタイルは、セクションのレンダリングにテキスト情報を使用することも、それを無視して単純なセパレータのようにセクションをレンダリングすることもできます。

QMenu は、返された の所有権を取得します。QAction

QWidget::addAction()も参照してください

QAction *QMenu::addSection(const QIcon &icon, const QString &text)

この便利な関数は、新しいセクションアクション、つまりQAction::isSeparator() が true を返し、texticon のヒントを持つアクションを作成し、新しいアクションをこのメニューのアクションリストに追加します。新しく作成されたアクションを返す。

ヒントのレンダリングはスタイルとプラットフォームに依存します。ウィジェットスタイルは、セクションのレンダリングにテキストとアイコンの情報を使用することも、それらを無視してセクションを単純なセパレータのようにレンダリングすることもできます。

QMenu 返された の所有権を取得します。QAction

QWidget::addAction()も参照してください

QAction *QMenu::addSeparator()

この便利な関数は、新しいセパレータアクション、つまりQAction::isSeparator() が true を返すアクションを作成し、新しいアクションをこのメニューのアクションリストに追加します。この関数は新しく作成されたアクションを返します。

QMenu 返された の所有権を取得します。QAction

QWidget::addAction()も参照

[override virtual protected] void QMenu::changeEvent(QEvent *e)

を参照してください:QWidget::changeEvent(QEvent *event)。

void QMenu::clear()

メニューのすべてのアクションを削除します。メニューが所有し、他のウィジェットに表示されていないアクションは削除されます。

removeAction()も参照してください

[protected] int QMenu::columnCount() const

メニューが画面に収まらない場合は、収まるようにレイアウトされます。レイアウトが何を意味するかはスタイルに依存します(例えば、Windowsでは複数のカラムを使用します)。

この関数は必要なカラム数を返します。

QAction *QMenu::defaultAction() const

現在のデフォルト・アクションを返します。

setDefaultAction()も参照ください

[override virtual protected] void QMenu::enterEvent(QEnterEvent *)

再実装:QWidget::enterEvent(QEnterEvent *event)。

[override virtual protected] bool QMenu::event(QEvent *e)

再インプリメント:QWidget::event(QEvent *event)を再定義します。

QAction *QMenu::exec()

このメニューを同期的に実行します。

これはexec(pos()) と同等です。

これは、ポップアップメニューまたはそのサブメニューのいずれかでトリガーされたQAction 、アイテムがトリガーされなかった場合(通常はユーザーがEscを押したため)nullptr

ほとんどの場合、現在のマウスの位置など、自分で位置を指定したいでしょう:

exec(QCursor::pos());

または、ウィジェットにアライメントされている場合:

exec(somewidget.mapToGlobal(QPoint(0,0)));

または、QMouseEvent *eに反応した場合などです:

exec(e->globalPosition().toPoint());

QAction *QMenu::exec(const QPoint &p, QAction *action = nullptr)

これはオーバーロードされた関数です。

このメニューを同期的に実行します。

指定されたグローバル位置p にアクションaction が来るようにメニューをポップアップします。ウィジェットのローカル座標をグローバル座標に変換するには、QWidget::mapToGlobal() を使用します。

これは、ポップアップメニューまたはそのサブメニューのいずれかでトリガーされたQAction を返し、アイテムがトリガーされなかった場合はnullptr を返します(通常は、ユーザーが Esc キーを押したため)。

すべてのシグナルは通常通り発せられることに注意してください。QAction 、スロットに接続してメニューのexec()を呼び出すと、シグナルとスロットの接続とexec()の戻り値の両方で結果が得られます。

一般的な使い方は、現在のマウス位置にメニューを配置することです:

exec(QCursor::pos());

または、ウィジェットにアライメントする:

exec(somewidget.mapToGlobal(QPoint(0, 0)));

または、QMouseEvent *eに反応することです:

exec(e->globalPosition().toPoint());

exec()やpopup()でメニューを配置する場合、メニューの現在のsize()に依存することはできないことに注意してください。パフォーマンス上の理由から、メニューは必要なときだけサイズを変更します。そのため、多くの場合、表示前と表示後ではサイズが異なります。代わりに、メニューの現在の内容に応じて適切なサイズを計算するsizeHint() を使用する。

popup() およびQWidget::mapToGlobal()も参照の こと。

[static] QAction *QMenu::exec(const QList<QAction *> &actions, const QPoint &pos, QAction *at = nullptr, QWidget *parent = nullptr)

これはオーバーロードされた関数です。

メニューを同期的に実行する。

メニューのアクションはactions のリストで指定される。メニューは、指定されたアクションat がグローバル位置pos に表示されるようにポップアップする。at が指定されない場合、メニューはpos の位置に表示されます。parent はメニューの親ウィジェットです。親を指定することで、pos だけではメニューの移動先を決定できない場合(複数のデスクトップがある場合や、親がQGraphicsView に埋め込まれている場合など)にコンテキストを提供します。

この関数は、ポップアップメニューまたはそのサブメニューのいずれかでトリガーされたQAction を返し、アイテムがトリガーされなかった場合はnullptr を返します(通常はユーザーが Esc キーを押したため)。

これは以下と等価である:

QMenu menu;
QAction *at = actions[0]; // Assumes actions is not empty
for (QAction *a : std::as_const(actions))
    menu.addAction(a);
menu.exec(pos, at);

popup() およびQWidget::mapToGlobal()も参照

[override virtual protected] bool QMenu::focusNextPrevChild(bool next)

reimplements:QWidget::focusNextPrevChild(bool next)と同じです。

[override virtual protected] void QMenu::hideEvent(QHideEvent *)

再インプリメント:QWidget::hideEvent(QHideEvent *event)。

void QMenu::hideTearOffMenu()

この関数は、引き裂かれたメニューを強制的に隠し、ユーザのデスクトップから消します。

showTearOffMenu(),isTearOffMenuVisible(),isTearOffEnabled()も参照

[signal] void QMenu::hovered(QAction *action)

このシグナルは、メニュー・アクションがハイライトされたときに発せられる。action は、シグナルが発せられる原因となったアクションである。

多くの場合、このシグナルはステータス情報の更新に使用される。

triggered() およびQAction::hovered()も参照の こと。

[virtual protected] void QMenu::initStyleOption(QStyleOptionMenuItem *option, const QAction *action) const

このメニューの値とaction の情報でoption を初期化する。このメソッドは、サブクラスがQStyleOptionMenuItem を必要とするが、すべての情報を自分で入力したくない場合に便利である。

QStyleOption::initFrom() およびQMenuBar::initStyleOption()も参照してください

QAction *QMenu::insertMenu(QAction *before, QMenu *menu)

この便利な関数は、menu をアクションbefore の前に挿入し、メニューmenuAction() を返します。

QWidget::insertAction() およびaddMenu() も参照

QAction *QMenu::insertSection(QAction *before, const QString &text)

この便宜関数は、新しいタイトルアクションを作成します。すなわち、QAction::isSeparator() が真を返し、text ヒントを持つアクションを作成します。この関数は、新しく作成されたアクションをアクションbefore の前に挿入して返します。

ヒントのレンダリングはスタイルとプラットフォームに依存します。ウィジェットスタイルは、セクションのレンダリングにテキスト情報を使用することも、それを無視してセクションを単純なセパレータのようにレンダリングすることもできます。

QMenu は、返された の所有権を持つ。QAction

QWidget::insertAction() およびaddSection()も参照してください

QAction *QMenu::insertSection(QAction *before, const QIcon &icon, const QString &text)

この便利な関数は、新しいタイトルアクションを作成します。つまり、QAction::isSeparator() が true を返し、texticon のヒントも持つアクションです。この関数は、新しく作成されたアクションを、アクションbefore の前に挿入して返します。

ヒントのレンダリングはスタイルとプラットフォームに依存します。ウィジェットスタイルは、セクションのレンダリングにテキストとアイコンの情報を使用することも、それらを無視してセクションを単純なセパレータのようにレンダリングすることもできます。

QMenu 返された の所有権を取得します。QAction

QWidget::insertAction() およびaddSection()も参照してください

QAction *QMenu::insertSeparator(QAction *before)

この便利な関数は、新しいセパレータアクション、つまりQAction::isSeparator() が真を返すアクションを作成します。この関数は、新しく作成したアクションを、アクションbefore の前に挿入して返します。

QMenu この関数は、返された の所有権を持ちます。QAction

QWidget::insertAction() およびaddSeparator()も参照

bool QMenu::isEmpty() const

メニューに挿入された目に見えるアクションがない場合はtrue を返し、そうでない場合は false を返します。

QWidget::actions() も参照

bool QMenu::isTearOffMenuVisible() const

メニューが切り離されると、メニューの内容を新しいウィンドウに表示するための 2 番目のメニューが表示されます。メニューがこのモードにあり、メニューが表示されている場合はtrue を返し、そうでない場合は false を返す。

showTearOffMenu(),hideTearOffMenu(),isTearOffEnabled()も参照

[override virtual protected] void QMenu::keyPressEvent(QKeyEvent *e)

再実装:QWidget::keyPressEvent(QKeyEvent *event)。

[override virtual protected] void QMenu::leaveEvent(QEvent *)

再インプリメント:QWidget::leaveEvent(QEvent *event)。

このメニューに関連付けられたアクションを返します。

action action にメニューが含まれていない場合は に含まれるメニューを返します。nullptr

ウィジェット・アプリケーションでは、メニューを含むアクションを使用して、サブメニューを持つメニュー項目を作成したり、ツールバーに挿入してポップアップメニューを持つボタンを作成したりすることができます。

[override virtual protected] void QMenu::mouseMoveEvent(QMouseEvent *e)

再実装します:QWidget::mouseMoveEvent(QMouseEvent *event)。

[override virtual protected] void QMenu::mousePressEvent(QMouseEvent *e)

再インプリメント:QWidget::mousePressEvent(QMouseEvent *event)。

[override virtual protected] void QMenu::mouseReleaseEvent(QMouseEvent *e)

再リンプルメント: (QMouseEvent *event)QWidget::mouseReleaseEvent(QMouseEvent *event).

[override virtual protected] void QMenu::paintEvent(QPaintEvent *e)

再リンプルメント: (QMouseEvent *event):QWidget::paintEvent(QPaintEvent *event)。

アクションatAction が指定されたグローバル位置p になるようにメニューを表示します。ウィジェットのローカル座標をグローバル座標に変換するには、QWidget::mapToGlobal() を使用します。

exec() や popup() でメニューを配置する場合、メニューの現在のsize() に依存できないことに注意してください。パフォーマンス上の理由から、メニューは必要なときだけサイズを変更するので、多くの場合、表示前と表示後のサイズは異なります。代わりに、メニューの現在の内容に応じて適切なサイズを計算するsizeHint() を使用する。

QWidget::mapToGlobal() およびexec()も参照

void QMenu::setActiveAction(QAction *act)

現在ハイライトされているアクションをact に設定する。

activeAction()も参照

void QMenu::setAsDockMenu()

このメニューを、アプリケーションのドックアイコンをオプションクリックして利用できるドックメニューに設定します。macOS でのみ利用可能です。

void QMenu::setDefaultAction(QAction *act)

これはデフォルトのアクションをact に設定します。 デフォルトのアクションは、現在のQStyle に応じて視覚的な手がかりを持つ場合があります。デフォルトアクションは通常、ドロップが発生したときにデフォルトで何が起こるかを示します。

defaultAction()も参照

void QMenu::showTearOffMenu(const QPoint &pos)

この関数は、引き裂かれたメニューを強制的に表示し、指定されたグローバル位置の ユーザのデスクトップに表示させますpos

hideTearOffMenu()、isTearOffMenuVisible()、isTearOffEnabled() も参照

void QMenu::showTearOffMenu()

これはオーバーロードされた関数です。

この関数は、引き裂かれたメニューを強制的に表示し、マウスカーソルの下にあるユーザのデスクトップに表示させます。

hideTearOffMenu()、isTearOffMenuVisible()、isTearOffEnabled()も参照のこと

[override virtual] QSize QMenu::sizeHint() const

プロパティのアクセス関数を再実装しています:QWidget::sizeHint

[override virtual protected] void QMenu::timerEvent(QTimerEvent *e)

再実装しています:QObject::timerEvent(QTimerEvent *event)。

NSMenu *QMenu::toNSMenu()

このメニューのネイティブ NSMenu を返します。macOS でのみ利用可能です。

注意: Qt はネイティブメニューにデリゲートを設定します。独自のデリゲートを設定する必要がある場合は、必ず元のデリゲートを保存し、そのデリゲートへの呼び出しを転送してください。

[signal] void QMenu::triggered(QAction *action)

このシグナルは、このメニューのアクションがトリガーされたときに発せられます。

action はシグナルが発せられる原因となったアクションです。

通常は、各メニューアクションのtriggered() シグナルをそれぞれのカスタムスロットに接続します。しかし、例えば、"left justify"、"center"、"right justify "のような密接に関連したアクションのグループがある場合など、複数のアクションを1つのスロットに接続したいことがあります。

注意: このシグナルは、階層構造におけるメインの親メニューに対して発せられます。従って、親メニューだけがスロットに接続される必要があります;サブメニューは接続される必要はありません。

hovered() およびQAction::triggered()も参照の こと。

[override virtual protected] void QMenu::wheelEvent(QWheelEvent *e)

再実装:QWidget::wheelEvent(QWheelEvent *event)を参照してください。

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