Qt之托盘应用程序

明白一个概念:托盘应用程序,本身应用程序并没有消失,只是隐藏;而托盘程序更像一个独立的小form存于托盘中。

引出要介绍的类,QSystemTrayIcon;具体作用就是为托盘form添加一些 icon、tooltip、和一些功能。

  • setIcon,设置托盘图标
  • setContextMenu,绑定鼠标点击后的弹出菜单
  • activated,这是一个信号;可以找到对应的枚举。表示的是系统托盘被激活的原因;可以通过这个来实现双击托盘显示界面。
  • isSystemTrayAvailable,判断系统是否支持托盘。

有了这些了解,就可以创建代码了

 //菜单的创建
    menu=new QMenu(this);
    mExit=new QAction(QStringLiteral("退出"),this);
    mShow=new QAction(QStringLiteral("显示主界面"),this);
    connect(mShow,&QAction::triggered,this,&MainWindow::showForm);
    connect(mExit,&QAction::triggered,this,&MainWindow::exitApp);
    menu->addAction(mShow);
    menu->addSeparator();
    menu->addAction(mExit);
//托盘指示的创建
    if (!QSystemTrayIcon::isSystemTrayAvailable())
    {
   QMessageBox::information(this,QStringLiteral("托盘提示"),QStringLiteral("不支持托盘"));
    }
    else
    {
    tray=new QSystemTrayIcon(this);
    QIcon icon=QIcon("./hh_logo.ico");
    tray->setIcon(icon);
    tray->setToolTip(QStringLiteral("测试成功"));
    tray->setContextMenu(menu);//关联菜单
    connect(tray,&QSystemTrayIcon::activated,this,&MainWindow::activeForm);
    }
}
void MainWindow::on_pushButton_clicked()
{//一个button按钮
    this->close();
}
void MainWindow::closeEvent(QCloseEvent *event)
{//重写的窗口关闭事件
   if (QMessageBox::information(this,QStringLiteral("关闭提示"),QStringLiteral("是否退出"),QMessageBox::Yes|QMessageBox::No)==QMessageBox::Yes)
       event->accept();
   else
   {
        event->ignore();
        this->hide();
        tray->show();
   }
}
void MainWindow::exitApp()
{//退出程序
    exit(0);
}
void MainWindow::showForm()
{//右键菜单的显示界面
    this->show();
}
void MainWindow::activeForm(QSystemTrayIcon::ActivationReason reason)
{//对应的托盘信号 接收的槽函数
   if (reason ==2)
       this->show();
   else
       return;
}

上面是一些基本的操作。
下面是.h的声明

private slots:
    void on_pushButton_clicked();
    void showForm();
    void exitApp();
    void activeForm(QSystemTrayIcon::ActivationReason reason);
private:
    Ui::MainWindow *ui;
    void  closeEvent(QCloseEvent *event);// 关闭窗体
    QSystemTrayIcon *tray;
    QMenu *menu;
    QAction *mShow;
    QAction *mExit;

完全ojbk。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值