当用户在Qt应用程序中单击任务栏/停靠栏图标时获取事件或通知

时间:2014-04-10 09:55:04

标签: qt taskbar dock

我正在osx,windows,linux中开发一个应用程序

我想制作像skype这样的功能。当用户单击关闭窗口时,应用程序不会退出但隐藏当用户在Dock或任务栏上单击appicon时,我的主窗口将再次重新打开。

如何在用户点击应用图标时收到通知或过滤事件?

2 个答案:

答案 0 :(得分:2)

首先,当您点击"关闭窗口时,您需要阻止应用程序窗口关闭。按钮。假设您使用QMainWindow

class MainWindow : public QMainWindow
{
    // .. constructors, etc.
    // ..
protected:
    void closeEvent(QCloseEvent *)
    {
        // Do not close, but hide the window.
        hide();
    }
};

Qt有专门的类来处理任务栏图标 - QSystemTrayIcon。所以,简单的应用程序看起来像:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    MainWindow mw;
    QSystemTrayIcon tray; // needs an icon.

    // Show the main window when user activates the tray icon.
    QObject::connect(&tray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
                     &mw, SLOT(show()));
    tray.show();

    return app.exec();
}

答案 1 :(得分:0)

这应该会有所帮助:

 void setQuitOnLastWindowClosed(bool quit)