`
美丽的小岛
  • 浏览: 308245 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Qt-----托盘功能[转]

    博客分类:
  • QT
 
阅读更多

添加两个成员变量

QSystemTrayIcon *trayicon;

QMenu *trayiconMenu;

 

添加一个槽函数用于响应在托盘图标及托盘菜单上的鼠标点击操作

void onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason reason);

 

在构造函数中对添加的两个变量进行初始化

 trayicon = new QSystemTrayIcon(this);

  //创建QIcon对象,参数是图标资源,值为项目的资源文件中图标的地址

  QIcon icon("F:/Windows QT/TrayIcon/bottom.png");

  trayiconMenu = new QMenu(this);

  //为托盘菜单添加菜单项

  trayiconMenu->addAction(ui->action_quit);

  //为托盘菜单添加分隔符

  trayiconMenu->addSeparator();

   //将创建的QIcon对象作为系统托盘图标

  trayicon->setIcon(icon);

  //显示托盘图标

  trayicon->show();

  //设置系统托盘提示

  trayicon->setToolTip(tr("托盘测试"));

  //将创建菜单作为系统托盘菜单   

  trayicon->setContextMenu(trayiconMenu);

    //在系统托盘显示气泡消息提示

  trayicon->showMessage(tr("hahaya"), tr("托盘测试"), QSystemTrayIcon::Information, 5000);

  //为系统托盘绑定单击信号的槽 即图标激活时

  connect(trayicon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason)));

 

实现槽函数onSystemTrayIconClicked

void MainWindow::onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason reason)

{

  switch(reason)

  {

  //单击

  case QSystemTrayIcon::Trigger:

  //双击

  case QSystemTrayIcon::DoubleClick:

      //恢复窗口显示

      this->setWindowState(Qt::WindowActive);

      this->show();

      break;

  default:

      break;

  }

}

 

5  当点击窗口的关闭按钮时,将程序托盘,则重写类的closeEvent函数

void MainWindow::closeEvent(QCloseEvent *event)

{

  if(trayicon->isVisible())

  {

      hide();

      event->ignore();

  }

}

 

点击“退出”菜单的槽函数,点击退出时托盘

void MainWindow::on_action_quit_triggered()

{

  this->hide();

  this->close();

}

 

  1. //mainwindow.h  
  2. #ifndef MAINWINDOW_H  
  3. #define MAINWINDOW_H  
  4. #include <QMainWindow>  
  5. #include <QSystemTrayIcon>  
  6. #include <QMenu>  
  7. #include <QCloseEvent>  
  8. namespace Ui {  
  9.   class MainWindow;  
  10. }  
  11. class MainWindow : public QMainWindow  
  12. {  
  13.   Q_OBJECT  
  14. public:  
  15.   explicit MainWindow(QWidget *parent = 0);  
  16.   ~MainWindow();  
  17. private:  
  18.   
  19.   Ui::MainWindow *ui;  
  20. private slots:  
  21.   void on_action_quit_triggered();  
  22.   void onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason reason);  
  23. protected:  
  24.   void closeEvent(QCloseEvent *event);  
  25. private:  
  26.   QSystemTrayIcon *trayicon;  
  27.   QMenu *trayiconMenu;  
  28. };  
  29. #endif // MAINWINDOW_H  


 

//mainwindow.cpp  
  1. #include <QtGui>  
  2. #include "mainwindow.h"  
  3. #include "ui_mainwindow.h"  
  4. MainWindow::MainWindow(QWidget *parent) :  
  5.   QMainWindow(parent),  
  6.   ui(new Ui::MainWindow)  
  7. {  
  8.   ui->setupUi(this);  
  9.   trayicon = new QSystemTrayIcon(this);  
  10.   //创建QIcon对象,参数是图标资源,值为项目的资源文件中图标的地址  
  11.   QIcon icon("F:/Windows QT/TrayIcon/bottom.png");  
  12.   trayiconMenu = new QMenu(this);  
  13.   //为托盘菜单添加菜单项  
  14.   trayiconMenu->addAction(ui->action_quit);  
  15.   //为托盘菜单添加分隔符  
  16.   trayiconMenu->addSeparator();  
  17.   //将创建的QIcon对象作为系统托盘图标  
  18.   trayicon->setIcon(icon);  
  19.   //显示托盘图标  
  20.   trayicon->show();  
  21.   //设置系统托盘提示  
  22.   trayicon->setToolTip(tr("托盘测试"));  
  23.   //将创建菜单作为系统托盘菜单  
  24.   trayicon->setContextMenu(trayiconMenu);  
  25.   //在系统托盘显示气泡消息提示  
  26.   trayicon->showMessage(tr("hahaya"), tr("托盘测试"), QSystemTrayIcon::Information, 5000);  
  27.   //为系统托盘绑定单击信号的槽 即图标激活时  
  28.   connect(trayicon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason)));  
  29. }  
  30. MainWindow::~MainWindow()  
  31. {  
  32.   delete ui;  
  33. }  
  34. void MainWindow::onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason reason)  
  35. {  
  36.   switch(reason)  
  37.   {  
  38.   //单击  
  39.   case QSystemTrayIcon::Trigger:  
  40.   //双击  
  41.   case QSystemTrayIcon::DoubleClick:  
  42.       //恢复窗口显示  
  43.       this->setWindowState(Qt::WindowActive);  
  44.       this->show();  
  45.       break;  
  46.   default:  
  47.       break;  
  48.   }  
  49. }  
  50. void MainWindow::closeEvent(QCloseEvent *event)  
  51. {  
  52.   if(trayicon->isVisible())  
  53.   {  
  54.       hide();  
  55.       event->ignore();  
  56.   }  
  57. }  
  58. void MainWindow::on_action_quit_triggered()  
  59. {  
  60.   this->hide();  
  61.   this->close();  
  62. }  


 

[
  1. //main.cpp  
  2. #include <QtGui/QApplication>  
  3. #include <QTextCodec>  
  4. #include "mainwindow.h"  
  5. int main(int argc, char *argv[])  
  6. {  
  7.   QTextCodec::setCodecForTr(QTextCodec::codecForLocale());  
  8.   QApplication a(argc, argv);  
  9.   MainWindow w;  
  10.   w.show();  
  11.   return a.exec();  
  12. }  

 

分享到:
评论

相关推荐

    QT-托盘使用,一看就懂

    以下是一个简单的使用QT托盘功能的步骤: 1. 引入必要的头文件: ```cpp #include #include #include #include ``` 2. 创建QSystemTrayIcon对象,设置图标: ```cpp QIcon icon("icon.png"); // 使用你的图标...

    Qt 5.5 托盘功能实现

    在Qt框架中,托盘功能是一项重要的特性,它允许应用程序在系统任务栏的托盘区域显示图标和菜单,提供一种非侵入式的交互方式。在标题提到的"Qt 5.5 托盘功能实现"中,我们将深入探讨如何在Qt 5.5版本下实现这一功能...

    树莓派Qt-监测CPU温度的小工具

    标题中的“树莓派Qt-监测CPU温度的小工具”指的是一个使用Qt框架为树莓派Raspbian操作系统设计的应用程序,其主要功能是实时监控CPU的温度。Qt是一个跨平台的C++图形用户界面库,它允许开发者创建美观且功能丰富的...

    Windows QT托盘程序例子

    总的来说,这个“Windows QT托盘程序例子”是一个学习QT库和系统托盘功能的宝贵资源,对想要在Windows上开发具有后台运行能力的应用程序的开发者来说非常有用。通过深入研究和实践这个示例,开发者能够掌握如何利用...

    Qt实现托盘全部常用功能示例

    对于初学者来说,这是一个很好的学习资源,可以快速理解Qt托盘功能的用法。通过阅读和实践这些代码,你可以了解到如何在Qt应用程序中充分利用系统托盘,提升用户体验,特别是在需要隐藏主窗口但仍保持应用程序后台...

    QT项目-QT-music.zip

    QT音乐播放器 功能: 实现播放/暂停、上/下一首。 仿酷狗音乐界面,实现歌曲列表、换肤、迷你模式、托盘菜单控制音乐播放功能。

    QT托盘消息模拟QQ消息列表通知

    要实现QT托盘功能,我们需要使用`QSystemTrayIcon`类。这个类提供了一个接口,使得程序可以在系统托盘区域显示一个图标,并处理与之相关的事件,如单击、双击等。首先,我们需要创建一个`QSystemTrayIcon`对象,然后...

    Qt实现最小化到托盘任务栏-完整工程代码.zip

    当我们使用一些常见的即时通讯软件,如QQ、微信等,点击关闭按钮后,并不是真正地关闭应用程序,...通过使用Qt框架提供的QSystemTrayIcon类,可以为自己的应用程序实现与QQ、微信等相似的最小化到托盘任务栏的功能。

    QT托盘和简单的图片处理

    通过`QSystemTrayIcon`实现系统托盘功能,通过`QImage`进行图像的加载、显示和处理。在实际项目中,结合这两点可以实现各种丰富的功能,如状态提示、用户交互界面以及图像编辑等。在学习和实践中,不断熟悉和掌握...

    Qt之系统托盘

    在编程领域,Qt是一个广泛应用的跨平台应用程序开发框架,它由C++编写并提供了一整套用户界面交互和图形库。本教程将深入探讨Qt中...希望这个教程对你理解和使用Qt的系统托盘功能有所帮助,祝你在编程道路上更进一步!

    Qt创建托盘图标

    在Qt开发框架中,创建系统托盘图标是许多应用程序设计中常见的需求,尤其是对于那些需要在后台持续运行或提供快速访问功能的应用程序。本文将深入探讨如何在Qt中实现托盘图标的创建,并通过一个具体的示例来演示其...

    Qt 实现系统托盘,托盘菜单,托盘消息.zip

    首先,我们要了解Qt中的`QSystemTrayIcon`类,它是实现系统托盘功能的核心。这个类提供了一个图标,可以放置在操作系统任务栏的系统托盘区域,同时允许添加右键点击菜单和显示通知消息。 1. **创建系统托盘图标** ...

    fcitx-qt5-rstudio.zip

    2. **Fcitx-Qt5**:Fcitx-Qt5是Fcitx的一个插件,用于在基于Qt5的应用程序中启用输入法功能。对于RStudio这样的Qt5应用,安装并配置Fcitx-Qt5是实现中文输入的关键。 3. **RStudio在Linux中的中文输入**:在Linux...

    QT进程监控 托盘

    QT进程监控托盘程序是一种基于QT库开发的应用,主要用于实时监测和管理计算机上的特定进程。QT是一个跨平台的C++图形用户界面应用程序开发框架,它提供了丰富的API和工具,使得开发者能够创建美观、功能强大的桌面...

    Qt 托盘实例

    在 Qt 中,我们使用 `QSystemTrayIcon` 类来实现托盘功能。首先,我们需要创建一个 `QSystemTrayIcon` 对象,并设置一个图标(通常是 `.png` 或 `.svg` 格式): ```cpp QIcon icon("icon.png"); QSystemTrayIcon ...

    关于qt系统托盘的资料

    Qt系统托盘是Qt库提供的一种功能,允许应用程序在操作系统任务栏或系统托盘区域创建一个图标,...通过这些,你可以创建一个具备系统托盘功能的Qt应用程序,使得用户即使在主窗口不可见的情况下也能轻松访问和控制应用。

    Qt之程序最小化托盘显示及操作

    2. **QSystemTrayIcon**:这是Qt中的一个关键类,用于实现系统托盘功能。通过创建QSystemTrayIcon对象,我们可以设置一个图标并监听用户与托盘图标的交互事件,如单击、双击等。 3. **程序最小化逻辑**:在Qt程序中...

    Qt托盘源码

    Qt托盘图标是应用程序在系统任务栏或通知区域中显示的小图标,用户可以通过它来执行一些操作或获取应用程序的状态。 首先,让我们了解Qt中的`QSystemTrayIcon`类,这是实现托盘图标的基石。`QSystemTrayIcon`提供了...

    Qt个性化系统托盘的实现

    在本文中,我们将深入探讨如何使用Qt框架来实现一个个性化的系统托盘,这个系统托盘的设计灵感来源于电脑管家的风格。尽管我们无法提供与电脑管家完全相同的图标,但通过Qt提供的API,我们可以创建出非常接近的功能...

Global site tag (gtag.js) - Google Analytics