【问题标题】:QSystemTrayIcon QMenu Submenu with Qt 5QSystemTrayIcon QMenu 子菜单与 Qt 5
【发布时间】:2015-08-13 17:59:56
【问题描述】:

我有一个程序可以创建 QMenu 并将 QMenu 添加到第一个菜单。程序在qt4上运行完美,但是当我用qt5编译时,子菜单没有出现。这是一个示例代码:

QMenu *menu = this->menuBar()->addMenu("Menu");
QMenu *menu2 = menu->addMenu("Menu2");
QAction *act = menu2->addAction("act");

QSystemTrayIcon *qsti = new QSystemTrayIcon(this);
qsti->setContextMenu(menu);
qsti->show();

菜单栏正确显示所有内容,但 systemtrayicon 无法显示子菜单。截图:

在这里,您可以看到第二张图片(系统托盘)中没有子菜单。有什么办法可以解决这个问题吗?我在带有 Qt 5.4.1 的 Ubuntu 15.04 上。

【问题讨论】:

    标签: qt qmenu qmenubar


    【解决方案1】:

    前进是:

    QMenu *menu = this->menuBar()->addMenu("Menu");
    QMenu *menu2 = new QMenu("Menu2", menu);
    QAction *act = menu2->addAction("act");
    menu->addMenu(menu2);
    
    QSystemTrayIcon *icon = new QSystemTrayIcon(this);
    icon->setContextMenu(menu);
    icon->show();
    

    现在它显示有操作,但在我的 Ubuntu 上显示有某种错误。可以试试吗?

    【讨论】:

    • 我试过了,但没有任何改变。同样,菜单栏显示正确,但 QSystemTrayIcon 不显示操作。我认为这是与 qt5 相关的错误,但我不确定,也许在 qt5 之后有些事情发生了变化。如果你有windows,能不能试试看?
    • 在我的情况下,行为发生了一些变化。在您的示例中没有显示任何内容,我可以在菜单上看到一个箭头,单击后我看到应该是一个动作的长线。抱歉,我只能在 Ubuntu 下测试。
    • 感谢您的回复。您的 qt 版本可能不同,这可能是您的计算机上的示例行为的原因。这两个示例在我的计算机上的结果相同。除此之外,这似乎是一个真正的错误。
    • 我使用的是 Qt 5.5。尝试将其报告为错误,可能稍后他们会解决它。
    猜你喜欢
    • 2012-03-09
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多