문제

컨텍스트 메뉴에 다음과 같이 만들어진 하위 메뉴를 추가하고 싶습니다.

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 );

직접 시도하지 않고, 나는 이것이 위젯에 대해 생성 된 컨텍스트 메뉴의 하단에 "Has Submenu"옵션을 추가 할 것으로 예상하며, 서브 메뉴가 표시된 하위 메뉴와 함께 표시됩니다.

다른 팁

MouserEleaseevent에서 qmenu의 popup ()를 사용하는 것은 어떻습니까?

if (pEvent->button() == Qt::RightButton)
{
    QMenu menu;
    menu.addAction(action1);
    menu.addAction(action2);
    menu.popup(pEvent->globalPos(),action1);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top