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

我认为最好的方法是将QMenu附在QSystemTrayIcon上:
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调用没有反应,并且保持不变。
我有几个问题:
谢谢!
发布于 2013-09-10 13:27:28
至于样式表--因为我只用QT做了非定制的托盘菜单,所以我很难说出这个例子有什么问题,我认为您也需要覆盖菜单栏中的项目,因为这只会设置菜单的背景,而且由于项目的整个宽度,我认为您只是看不到背景。尝试为QMenu::item和QMenu::item:selected设置样式,看看这是否有帮助。
至于方法--同样,还没有做过确切的事情,但我不认为通用的QMenu适合这一点,因为您对按钮的布局没有太多的控制,我也没有办法像Dropbox示例中那样获得空白,我认为您需要自己的小部件实现和添加其他小部件,放置它们等等。您可以子类QMenu并尝试添加一些自定义小部件,比如按钮等等,看看这是否能帮助您进行所需的更改。
https://stackoverflow.com/questions/18719751
复制相似问题