Qt托盘图标窗口

时间:2010-09-01 09:55:10

标签: qt

我正在使用QT.QSystemTrayIcon创建一个托盘图标。

点击托盘图标时,我需要在图标正上方(右下角)打开一个窗口。我怎么能这样做?

4 个答案:

答案 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()获得的坐标上。