设为首页 加入收藏

TOP

Qt-托盘功能 (一)
2014-11-23 23:30:03 来源: 作者: 【 】 浏览:2
Tags:Qt- 托盘 功能

1 添加两个成员变量
QSystemTrayIcon *trayicon;

QMenu *trayiconMenu;

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

void onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason reason);

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

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)));

4 实现槽函数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();

}

}

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

void MainWindow::on_action_quit_triggered()

{

this->hide();

this->close();

}


//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
#include
#include
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:

Ui::MainWindow *ui;
private slots:
void on_action_quit_triggered();
void onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason reason);
protected:
void closeEvent(QCloseEvent *event);
private:
QSystemTrayIcon *trayicon;
QMenu *trayiconMenu;
};
#endif // MAINWINDOW_H
//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
#include
#include
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:

Ui::MainWindow *ui;
private slots:
void on_action_quit_triggered();
void onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason reason);
protected:
void closeEvent(QCloseEvent *event);
private:
QSystemTrayIcon *trayicon;
QMenu *trayiconMenu;
};
#endif // MAINWINDOW_H


//mainwindow.cpp
#include
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
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);
//显示托盘图标
trayi

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Qt学习笔记:使用QTreeWidget实现.. 下一篇电话号码及日期时间提取(正则表达..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: