【Qt编程】基于Qt的词典开发系列<十一>系统托盘的显示
2014-07-28 21:35
639 查看
本文主要讨论Qt中的系统托盘的设置。系统托盘想必大家都不陌生,最常用的就是QQ。系统托盘以简单、小巧的形式能让人们较快的打开软件。废话不多说,下面开始具体介绍。
首先,新建一个Qt Gui项目,类型选择QMainWindow,类名也选择默认的mainwindow。这时,工程项目中就有3个文件(界面文件不用管):mainwindow.h mainwindow.cpp main.cpp。然后,分别修改3个文件如下:
1、mainwindow.h
3、main.cpp
基于Qt的词典开发系列词典框架设计及成品展示
本地词典的设计
开始菜单的设计
无边框窗口的缩放与拖动
无边框窗口的拖动
界面美化设计
调用网络API
用户登录及API调用的实现
JSON数据解析
国际音标的显示
系统托盘的显示
调用讲述人
音频播放
自动补全功能
HTML特殊字符及正则表达式
后序
作品下载地址(发布版):http://download.csdn.net/detail/tengweitw/8548767作品下载地址(绿色版):http://download.csdn.net/detail/tengweitw/8830495源码下载地址:http://download.csdn.net/detail/tengweitw/8830503
原文:/article/1325942.html
作者:nineheadedbird
首先,新建一个Qt Gui项目,类型选择QMainWindow,类名也选择默认的mainwindow。这时,工程项目中就有3个文件(界面文件不用管):mainwindow.h mainwindow.cpp main.cpp。然后,分别修改3个文件如下:
1、mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include<QSystemTrayIcon> #include<QMenu> #include<QCloseEvent> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; QSystemTrayIcon *trayicon;//将系统托盘及菜单定义为窗口的私有成员 QMenu *trayiconMenu; signals: void exitsignal();//发射程序退出信号 private slots: void onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason reason); void exit();//与退出按钮对应的槽 protected: void closeEvent(QCloseEvent *event); }; #endif // MAINWINDOW_H2、mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include<QtGui> #include<QEvent> #include<QDebug> #include<QAction> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); trayicon=new QSystemTrayIcon(this); QAction *quit=new QAction(tr("exit"), this); QIcon icon("D:/studytool/Qt/workspace/myTray/tengweitw.jpg");//注意修改这里的图片目录 setWindowIcon(icon); // setMinimumSize(200,100);//窗口最大化和最小化一样大小。所以窗口不能放大也不能缩小 // setMaximumSize(200,100); trayiconMenu=new QMenu(this); trayiconMenu->addAction(quit);//这里可以添加多个菜单 // trayiconMenu->addSeparator(); trayicon->setIcon(icon); trayicon->setToolTip(tr("我爱记单词")); trayicon->setContextMenu(trayiconMenu); connect(quit,SIGNAL(triggered(bool)),this,SLOT(exit())); connect(trayicon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason))); trayicon->show(); } MainWindow::~MainWindow() { delete ui; }
//下面处理不同情况下,单击托盘图标的操作 void MainWindow::onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason reason) { switch(reason) { //单击 case QSystemTrayIcon::Trigger: // qDebug()<<this->isEnabled(); //双击 // flag=!flag; // case QSystemTrayIcon::DoubleClick: //恢复窗口显示 if(this->isVisible())//判断窗口是否可见 { if(this->isMinimized())//窗口是否是最小化 { this->setWindowFlags(Qt::WindowStaysOnTopHint);//置顶 // this->setWindowFlags(Qt::Widget);//取消置顶 this->setWindowState(Qt::WindowActive); this->setGeometry(this->geometry());//使得每次显示窗口为上次的位置 this->show(); } else this->hide(); } else { this->setWindowFlags(Qt::WindowStaysOnTopHint);//置顶 // this->setWindowFlags(Qt::Widget);//取消置顶 this->setWindowState(Qt::WindowActive); this->setGeometry(this->geometry()); this->show(); } break; default: break; } } void MainWindow::exit() { emit exitsignal(); } void MainWindow::closeEvent(QCloseEvent *event)//处理窗口关闭事件 { if(trayicon->isVisible()) { hide(); this->close(); event->ignore(); } }
3、main.cpp
#include <QtGui/QApplication> #include "mainwindow.h" #include<QTextCodec> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForLocale());//防止中文乱码 MainWindow w; w.show(); QObject::connect(&w,SIGNAL(exitsignal()),&a,SLOT(quit()));//将退出按钮与退出函数绑定 return a.exec(); }
上面程序的主要部分都给了注释,在这就不一一分析了。运行结果如下:
1、界面如下(这不是我们关注的地方):
2、托盘显示如下:
3、托盘的菜单显示如下:
基于Qt的词典开发系列词典框架设计及成品展示
本地词典的设计
开始菜单的设计
无边框窗口的缩放与拖动
无边框窗口的拖动
界面美化设计
调用网络API
用户登录及API调用的实现
JSON数据解析
国际音标的显示
系统托盘的显示
调用讲述人
音频播放
自动补全功能
HTML特殊字符及正则表达式
后序
作品下载地址(发布版):http://download.csdn.net/detail/tengweitw/8548767作品下载地址(绿色版):http://download.csdn.net/detail/tengweitw/8830495源码下载地址:http://download.csdn.net/detail/tengweitw/8830503
原文:/article/1325942.html
作者:nineheadedbird
相关文章推荐
- 【Qt编程】基于Qt的词典开发系列<十一>系统托盘的显示
- 【Qt编程】基于Qt的词典开发系列<七>--调用网络API
- 【Qt编程】基于Qt的词典开发系列<八>--用户登录及API调用的实现
- 【Qt编程】基于Qt的词典开发系列<九>--JSON数据解析
- 【Qt编程】基于Qt的词典开发系列<六>--界面美化设计
- 【Qt编程】基于Qt的词典开发系列<三>--开始菜单的设计
- 【Qt编程】基于Qt的词典开发系列<五>--无边框窗口的拖动
- 【Qt编程】基于Qt的词典开发系列<十五>html特殊字符及正则表达式
- 【Qt编程】基于Qt的词典开发系列<十二>调用讲述人
- 【Qt编程】基于Qt的词典开发系列<十四>自动补全功能
- 【Qt编程】基于Qt的词典开发系列<十三>音频播放
- 【Qt编程】基于Qt的词典开发系列<二>--本地词典的设计
- 【Qt编程】基于Qt的词典开发系列<十>--国际音标的显示
- 【Qt编程】基于Qt的词典开发系列<八>--用户登录及API调用的实现
- 【Qt编程】基于Qt的词典开发系列<四>--无边框窗口的缩放与拖动
- 【Qt编程】基于Qt的词典开发系列<一>--词典框架设计及成品展示
- 【Qt编程】基于Qt的词典开发系列<十>--国际音标的显示
- 【Qt编程】基于Qt的词典开发系列<十四>自动补全功能
- 【Qt编程】基于Qt的词典开发系列<三>--开始菜单的设计
- 【Qt编程】基于Qt的词典开发系列<二>--本地词典的设计