【发布时间】:2013-09-29 07:44:11
【问题描述】:
我想在桌面右下角编写一个通知窗口,这样当有人上线时,它就像 Skype 通知一样工作。有人可以帮我获取桌面的屏幕尺寸,以便我可以使用我的 Qt 应用程序将通知窗口放在右下角吗?
【问题讨论】:
-
如果你正在编写通知,你最好使用操作系统的原生通知系统,Qt 提供了一个 API:stackoverflow.com/a/34425750/1450294
标签: qt
我想在桌面右下角编写一个通知窗口,这样当有人上线时,它就像 Skype 通知一样工作。有人可以帮我获取桌面的屏幕尺寸,以便我可以使用我的 Qt 应用程序将通知窗口放在右下角吗?
【问题讨论】:
标签: qt
您可以使用QDesktopWidget
QRect rec = QApplication::desktop()->screenGeometry();
height = rec.height();
width = rec.width();
【讨论】:
QApplication::desktop()->screenGeometry() 已弃用,请改用QGuiApplication::primaryScreen()->size()。
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()
【讨论】:
QML 页面的条件加载(例如,针对不同屏幕分辨率/方向的不同 QML 页面)?
primaryScreenChanged / screenAdded / screenRemoved
QList <QScreen*> screens = QGuiApplication::screens()。 QScreen 包括属性availableGeometry 和availableVirtualGeometry - 知道QWindow(signalsxChanged/yChanged) 的位置,您可能会找到应用程序的确切屏幕并使用正确的方向。
您尚未说明您正在为哪个平台开发,但某些平台具有用于显示通知的 API。最好在可用时使用它们,因为如果屏幕可能不合适,则右下角。您可以使用 krammer 的 answer。
例如,在 GNOME 中,用户可以在特定屏幕上显示通知,或者选择根本不显示通知,直到他们单击系统托盘图标。 libnotify API 使开发人员可以访问此功能。
说到系统托盘,您可能需要考虑改用QSystemTrayIcon。它会使 UI 有点不同,但有一个独立于平台的 Qt API,它适用于 GNOME、KDE、MacOS、Windows 和可能的其他平台。它还有一个 showMessage 方法,用于以平台原生的方式显示消息,例如在某些版本的 Windows 中带有可爱爆裂声的气球中。
【讨论】: