我正在使用QT.QSystemTrayIcon
创建一个托盘图标。
点击托盘图标时,我需要在图标正上方(右下角)打开一个窗口。我怎么能这样做?
答案 0 :(得分:2)
void main_window::create_tray_icon()
{
m_tray_icon = new QSystemTrayIcon(QIcon(":/icon.png"), this);
QAction *quit_action = new QAction( "Exit", m_tray_icon );
connect( quit_action, SIGNAL(triggered()), this, SLOT(on_exit()) );
QAction *another_action = new QAction( "Do something", m_tray_icon );
connect( another_action, SIGNAL(triggered()), this, SLOT(on_do_something()) );
QMenu *tray_icon_menu = new QMenu;
tray_icon_menu->addAction( another_action );
tray_icon_menu->addAction( quit_action );
m_tray_icon->setContextMenu( tray_icon_menu );
m_tray_icon->show();
}
答案 1 :(得分:2)
如果您想打开与图标对齐的窗口(如内置音量控件那样),请查看 manual :
QRect QSystemTrayIcon::geometry()
好的,我4年后回答,因为我今天发现了这个问题,试图解决同样的问题。
注意:这在Win上运行良好,在XP,7和8上进行了测试,但正如@MichaelScheper指出的那样,这不适用于Mint / GNOME。欢迎对其他平台的反馈。
答案 2 :(得分:0)
我不确定窗户究竟是什么意思。我的第一个答案是指弹出一个上下文菜单,您可以在其中添加多个操作。
如果您希望在Windows中有一个包含消息的小信息窗口,则应使用QSystemTrayIcon::showMessage。在那里,您可以弹出一条消息,设置此消息的持续时间并为其设置一个图标。
答案 3 :(得分:-1)
你的意思是在托盘图标上面打开QMainWindow或QWidget等窗口吗?
您需要使用QDesktopWidget
获取QApplication::desktop()
,然后查询QDesktopWidget的screenGeometry()
函数以确定屏幕尺寸,然后根据右下角创建一个窗口并将其正确定位在从screenGeometry()
获得的坐标上。