53

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

4

3 回答 3

72

您可以使用QDesktopWidget

 QRect rec = QApplication::desktop()->screenGeometry();
 height = rec.height();
 width = rec.width();
于 2013-09-24T07:49:53.260 回答
46

QScreen类(从 Qt 5.0 开始)提供有关屏幕大小(逻辑和物理)、方向和更改信号的信息。

QScreen *screen = QGuiApplication::primaryScreen();
QRect  screenGeometry = screen->geometry();
int height = screenGeometry.height();
int width = screenGeometry.width();

更新:

  • 对于多屏配置,请使用QList <QScreen*> screens = QGuiApplication::screens();
  • 对于方向(包括多屏),请使用screen->orientation()和(从 Qt 5.2 开始)screen->nativeOrientation()
于 2017-02-23T10:39:12.160 回答
9

您尚未说明您正在为哪个平台开发,但某些平台具有用于显示通知的 API。最好在可用时使用它们,因为如果屏幕可能不合适,则右下角。您可以依靠克拉默的回答

例如,在 GNOME 中,用户可以让通知出现在特定屏幕上,或者选择根本不显示它们,直到他们单击系统托盘图标。API使libnotify开发人员可以访问此功能。

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

于 2015-12-22T22:50:58.603 回答