QT:qtablewidgetからのコンテキストメニュー(qmenu)リファレンス
質問
このように作成されたコンテキストメニューにサブメニューを追加したい:
self.widget_alignment.setContextMenuPolicy(Qt.ActionsContextMenu)
WIDGET_ALIGNMENTがあります qtablewidget.
新しいQmenuインスタンスを作成しました:
exchange_bases_menu = QMenu(self.widget_alignment)
いくつかのアクションを追加し、方法を見つけました QACTION QMENU.ADDMENU(self、qmenuメニュー)
ただし、self.widget_alignmentのデフォルトのコンテキストメニューへの参照は表示されません。さらに、このコード:
self.widget_alignment.addMenu(exchange_bases_menu)
私に与えた:qtablewidgetオブジェクトには属性addmenuがありません。
サブメニューをデフォルトのコンテキストメニューに追加するにはどうすればよいですか?
解決
ドキュメントによると、a QWidget
アクションコンテキストメニュータイプがあるように設定されています。ウィジェットは、ウィジェットに設定されたアクションのリストに基づいてコンテキストメニューを作成します。アクションのリストを変更するには、呼び出すことができます addAction
, insertAction
, 、 また removeAction
. 。だから私はあなたがこのようなことをすることができると期待するでしょう(C ++で):
QAction *act_p = new QAction( "Has Submenu", widget_alignment );
QMenu *submenu_p = new QMenu( act_p );
// Add items to the submenu
act_p->setMenu( submenu_p );
widget_alignment->addAction( act_p );
自分で試してみることなく、これがウィジェット用に生成されるコンテキストメニューの下部に「サブメニュー」オプションを追加することを期待します。
他のヒント
MouserEleaseventでQmenuのPopup()を使用するのはどうですか?
if (pEvent->button() == Qt::RightButton)
{
QMenu menu;
menu.addAction(action1);
menu.addAction(action2);
menu.popup(pEvent->globalPos(),action1);
}
所属していません StackOverflow