QT开发中文网

qt winght中exe自启动后隐藏到右下方托盘里

要实现在Qt中的Widget应用程序自启动后隐藏到系统托盘(右下方),可以按照以下步骤进行:

  1. 引入所需的头文件:
#include <QSystemTrayIcon>
#include <QCloseEvent>
  1. 在类中声明托盘图标和相关函数:
class MyWidget : public QWidget {
    Q_OBJECT

public:
    explicit MyWidget(QWidget *parent = nullptr);

private slots:
    void minimizeToTray();
    void showNormalFromTray();

private:
    QSystemTrayIcon *trayIcon;

protected:
    void closeEvent(QCloseEvent *event) override;
};
  1. 实现相关函数:
MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    // 创建托盘图标对象
    trayIcon = new QSystemTrayIcon(this);
    
    // 设置要显示的图标
    QIcon icon = QIcon(":/path/to/your/icon.png");
    trayIcon->setIcon(icon);
    
    // 将单击托盘图标时触发的信号连接到槽函数showNormalFromTray()
    connect(trayIcon, &QSystemTrayIcon::activated, this, &MyWidget::showNormalFromTray);
    
    // 添加菜单项,比如恢复窗口、退出应用等
}

void MyWidget::minimizeToTray()
{
    hide();  // 隐藏窗口
    
    // 在系统托盘中显示图标和提示信息
    trayIcon->show();
}

void MyWidget::showNormalFromTray()
{
   showNormal();   // 恢复窗口的正常显示
   
   // 隐藏系统托盘图标
   trayIcon->hide();
}

void MyWidget::closeEvent(QCloseEvent *event)
{
    if (trayIcon->isVisible()) {
        // 如果窗口关闭时,托盘图标可见,则最小化到托盘
        minimizeToTray();
        event->ignore();
    } else {
        // 其他情况下,关闭窗口
        event->accept();
    }
}
  1. 在合适的位置调用minimizeToTray()函数来实现自启动后隐藏到系统托盘:
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    
    MyWidget widget;
    
    // 其他初始化设置
    
    widget.show();

    // 判断是否是自启动后第一次运行,如果是则隐藏到托盘
    if (app.arguments().contains("--autostart")) {
        QTimer::singleShot(0, &widget, &MyWidget::minimizeToTray);
    }

    return app.exec();
}

注意:以上代码只提供了基本的思路和结构,并不包含具体的菜单项、图标路径等细节。你需要根据实际需求进行相应的修改和补充。另外,记得在.pro文件中添加相关依赖(QSystemTrayIcon)和资源文件(icon.png)。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://qt.0voice.com/?id=11840

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?