【问题标题】:Qt: how to make decorated rich popup window instead the default QSystemTrayIcon popup windowQt:如何制作装饰丰富的弹出窗口而不是默认的 QSystemTrayIcon 弹出窗口
【发布时间】:2011-04-27 13:40:59
【问题描述】:

我有一个简单的通知应用程序,我正在使用带有 C++ 的 Qt 4.7.1 来编写一个位于系统托盘中的应用程序。每次来一个消息;我需要它来弹出一个窗口。但是,我需要它丰富(即,我想给它添加颜色和图片)。但是,我所拥有的只是默认的弹出消息框。如何创建始终在托盘图标上方弹出的更丰富的新内容?

【问题讨论】:

  • 澄清一下,您是在询问可以使用 QSystemTrayIcon::showMessage() 显示气球通知的样式还是为某种自定义小部件设置样式?
  • +1 仅用“是”回答“或问题”。

标签: c++ qt trayicon


【解决方案1】:

所有 qt 小部件类都可以通过stylesheets 设置样式,具体取决于创建弹出窗口的位置(设计器或代码中)为其分配具有您想要的外观的样式表。您可以通过使用小部件的上下文菜单为小部件分配样式来在设计器中测试样式表

经过进一步审查,QSystemTrayIcon::showMessage() 调用会发出系统 通知。我不知道它是否可以样式化。 qt 发行版中的qsystemtrayicon_win.cpp 文件显示了一种解决方法,并显示了如何在托盘中查找图标位置的方法(请参阅QSystemTrayIconSys::findIconGeometry)。获得位置后,您可以在该位置弹出自己的窗口。我没有深入了解,我不知道您是否可以使用 Qt 公共方面的信息找到图标的位置。您可能必须使用所有窗口。

【讨论】:

  • 有趣...我不知道弹出窗口可以设置样式。你有没有做到这一点?
  • 看你说的是什么类,没有QPopup,但是QWidget、QFrame、QMenu等都可以设置样式。我编写了一个应用程序,它只做很少的自定义绘制,但使用了所有标准组件,甚至是 QTableView,而且看起来根本不像一个 Qt 应用程序
  • 这不是那么容易做到这就是我问的原因,有些人建议继承并重新实现显示消息,这并不容易或不可能
  • 归结为拥有一个私人风格的弹出窗口对您来说有多重要,是否值得您付出努力
  • 有趣的问题,确定我需要更多的样式而不是样式我需要添加更多选项,比如显示超过 1 张图片
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多