如何在Qt中找到屏幕/桌面大小,以便显示桌面通知?

San*_*ddy 37 qt

我想在桌面的右下角编写一个通知窗口,所以当有人上线时它就像Skype通知一样.有人可以帮助我获得桌面的屏幕大小,所以我可以使用我的Qt应用程序将我的通知窗口放在右下角吗?

kra*_*mer 67

您可以使用QDesktopWidget

 QRect rec = QApplication::desktop()->screenGeometry();
 height = rec.height();
 width = rec.width();
Run Code Online (Sandbox Code Playgroud)

  • 小心 - 使用_available_几何可能更好:http://doc.qt.io/qt-5/qdesktopwidget.html#availableGeometry (7认同)
  • `QApplication::desktop()->screenGeometry()` 已弃用,请使用 `QGuiApplication::primaryScreen()->size()` 代替。 (5认同)
  • 正如文档中所写, QDesktopWidget 类被标记为已过时,并且可能会在下一个主要版本中被弃用,因此现在最好使用 QScreen 类,即使这个类不太方便 (3认同)
  • 我认为您可能对QDesktopWidget :: size()方法感兴趣:对我来说,它将返回在显示设置中配置的两个监视器堆叠在一起的大小。调用“ screenGeometry”仅给出一个监视器的尺寸。 (2认同)

小智 19

QScreen类(自Qt 5.0起)提供有关屏幕大小(逻辑和物理),方向和变化信号的信息.

QScreen *screen = QGuiApplication::primaryScreen();
QRect  screenGeometry = screen->geometry();
int height = screenGeometry.height();
int width = screenGeometry.width();
Run Code Online (Sandbox Code Playgroud)

  • 此选项是首选,因为 QApplication::desktop() 已过时(https://doc.qt.io/qt-5/qdesktopwidget.html) (2认同)

Mic*_*per 9

您尚未说明您正在开发哪个平台,但某些平台具有用于显示通知的API.最好在可用时使用这些,因为如果屏幕可能不合适,则在右下角.你可以回到krammer的答案.

例如,在GNOME中,用户可以在特定屏幕上显示通知,或选择不显示通知,直到他们单击系统托盘图标.该libnotifyAPI提供了此功能的开发者访问.

说到系统托盘,您可能需要考虑使用QSystemTrayIcon替代系统托盘.它会使UI略有不同,但有一个独立于平台的Qt API,适用于GNOME,KDE,MacOS,Windows和其他平台.它还有showMessage一种以平台原生方式显示消息的方法,例如在某些版本的Windows中具有可爱的弹出声音的气球中.