首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSystemTrayIcon的QMenu造型

QSystemTrayIcon的QMenu造型
EN

Stack Overflow用户
提问于 2013-09-10 13:04:09
回答 1查看 883关注 0票数 2

我正在尝试编写类似于one Dropbox的上下文菜单:

我认为最好的方法是将QMenu附在QSystemTrayIcon上:

代码语言:javascript
复制
class canvas : public QMenu
{
    Q_OBJECT
public:
    canvas(QObject* parent = 0);
};

canvas::canvas(QObject* parent) : QMenu()
{
    setStyleSheet("QMenu{background-color:#00ff00;}");
}

class tray_icon : public QSystemTrayIcon
{
    Q_OBJECT
public:
    tray_icon(canvas* a_canvas, QObject* parent = 0);
};

tray_icon::tray_icon(canvas* a_canvas, QObject* parent) : QSystemTrayIcon(parent)
{
    setContextMenu(a_canvas);
}

但是由于某种原因,QMenu对setStyleSheet调用没有反应,并且保持不变。

我有几个问题:

  1. 在这种情况下我做错了什么(为什么背景颜色没有设置为绿色)。
  2. QMenu是构建这样的下拉列表的正确工具(也许我应该使用其他小部件)。Dropbox是如何制作这样的菜单的?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-10 13:27:28

至于样式表--因为我只用QT做了非定制的托盘菜单,所以我很难说出这个例子有什么问题,我认为您也需要覆盖菜单栏中的项目,因为这只会设置菜单的背景,而且由于项目的整个宽度,我认为您只是看不到背景。尝试为QMenu::itemQMenu::item:selected设置样式,看看这是否有帮助。

至于方法--同样,还没有做过确切的事情,但我不认为通用的QMenu适合这一点,因为您对按钮的布局没有太多的控制,我也没有办法像Dropbox示例中那样获得空白,我认为您需要自己的小部件实现和添加其他小部件,放置它们等等。您可以子类QMenu并尝试添加一些自定义小部件,比如按钮等等,看看这是否能帮助您进行所需的更改。

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

https://stackoverflow.com/questions/18719751

复制
相关文章

相似问题

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