سؤال

أريد إضافة قائمة فرعية في قائمة سياقتي التي تم إنشاؤها مثل هذا:

self.widget_alignment.setContextMenuPolicy(Qt.ActionsContextMenu)

حيث widget_alignment هو qtablewidget..

أنشأت مثيل QMENU جديد:

exchange_bases_menu = QMenu(self.widget_alignment)

وأضاف بعض الإجراءات، ووجدت طريقة Qmenu.Addmenu (قائمة النفس، QMENU)

لكنني لا أرى أي إشارة إلى قائمة السياق الافتراضية ل self.widget_alignment. بالإضافة إلى ذلك، هذا الرمز:

self.widget_alignment.addMenu(exchange_bases_menu)

أعطاني: كائن QtableWidget ليس لديه سمة AddMenu.

كيف يمكنني إضافة القائمة الفرعية الخاصة بي إلى قائمة السياق الافتراضية؟

هل كانت مفيدة؟

المحلول

وفقا للوثائق، عندما 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 );

دون أن أحاول ذلك بنفسي، أتوقع أن يضيف هذا خيار "hasenu" إلى أسفل قائمة السياق التي تم إنشاؤها في القطعة، مع القائمة الفرعية التي قمت بإنشائها كما هو موضح في القائمة الفرعية الموضحة.

نصائح أخرى

ماذا عن استخدام QMENU المنبثقة () في Mousereleaseevent؟

if (pEvent->button() == Qt::RightButton)
{
    QMenu menu;
    menu.addAction(action1);
    menu.addAction(action2);
    menu.popup(pEvent->globalPos(),action1);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top