首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QWidgetAction不作为托盘的上下文菜单在QMenu中工作

QWidgetAction不作为托盘的上下文菜单在QMenu中工作
EN

Stack Overflow用户
提问于 2015-12-19 12:45:07
回答 1查看 3.2K关注 0票数 2

我尝试在QWidgetAction中插入QMenu,它将用作托盘的上下文菜单。当我这样做的时候,我的菜单里只有一条空行。

我正在使用QT5.5.1。我在等离子5桌面环境(Linux)工作。

这是我的代码:

代码语言:javascript
复制
action = new QWidgetAction(0);
testw = new QWidget();
testl = new QLabel(QString("Test"), testw);

action->setDefaultWidget(testw);

menu.addAction(action);
trayIcon.setContextMenu(&menu);

如果我使用menu.addAction(QString("Test")) -它是正确的显示。所有变量都是我类的成员(如果这有任何意义的话)。

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-19 14:54:40

只要您已经显示了菜单,那么问题就在于使用额外的小部件包装QLabel。这是QWdigetAction通常的工作方式:

代码语言:javascript
复制
QWidgetAction* pWidgetAction = new QWidgetAction(0); // no parent-owner?
QLabel* pLabelWidget = new QLabel("Test");           // label widget
pWidgetAction->setDefaultWidget(pLabelWidget);       // label is a widget
menu.addAction(pWidgetAction);                       // add widget action
trayIcon.setContextMenu(&menu);                      // this I assume works

此外,也不确定这些对象的生命周期(所有权)以及为什么menutrayIcon不是指针,但您应该更加清楚。默认情况下,我总是使用new创建UI对象,并将父小部件/对象地址传递给构造函数,尽管我们也可以在堆栈上使用这些对象(不是灵活的方法)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34370904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档