QSystemTrayIcon不返回任何几何图形信息



我在Unity桌面上使用Ubuntu(17.04(。我无法获取QSystemTrayIcon:的任何几何信息

trayIconMenu = new QMenu(this);
trayIcon = new QSystemTrayIcon(this);
trayIcon->setContextMenu(trayIconMenu);
QPixmap trayImage(":/icon.png");
QIcon icon(trayImage);
trayIcon->setIcon(icon);
setWindowIcon(icon);
trayIcon->show();
QRect rect = trayIcon->geometry();
qDebug() << "Tray GEO: " << rect;

这会打印出以下内容:

Tray GEO:  QRect(0,0 0x0)

所有的东西都归零了,这不可能是正确的。

我在PySide2中遇到了同样的问题,PySide2是一个竞标Qt5的python。这是我发现的。

QSystemTrayIcon对象(QRect对象(的几何图形在应用程序中是未知的,直到QSystemTrayIcon对象的信号activated至少发出一次。

单击系统托盘中应用程序的实际图标后,会发出activated信号,然后geometry()方法可以返回初始化的QRect对象及其位置和大小的实际值。

简而言之,您必须首先激活系统托盘图标,以便它发送带有实际位置和大小值的初始化QRect

要在应用程序启动时获得系统托盘图标的位置,这取决于屏幕分辨率和操作系统,您必须在代码中手动发出activated信号。

如果目标是在系统托盘图标附近显示一个窗口,您可以在启动时隐藏该窗口,一旦您单击系统托盘图标,它就会显示在系统托盘附近,方法是在代码中将您的窗口定位到与系统托盘图标相同的坐标处;或者,如果要在系统托盘图标附近直接显示窗口,则在启动时手动发出activated信号。

相关内容

  • 没有找到相关文章

最新更新