Qt学习九:控件六:任务栏托盘菜单
2016-06-30 10:43
295 查看
这是第六波控件
首先,qtButton.h中有:
#ifndef QTBUTTON_H
#define QTBUTTON_H
#include <QtWidgets/QMainWindow>
#include "ui_qtbutton.h"
//-------------------------------
#include<qsystemtrayicon.h>
#include<qmenu.h>
class qtButton : public QMainWindow
{
Q_OBJECT
public:
qtButton(QWidget *parent = 0);
~qtButton();
private:
Ui::qtButtonClass ui;
//---------------------------------
QSystemTrayIcon *myTrayIcon;//Tray 托盘
QMenu *myMenu;
QAction *restoreWinAction;
QAction *quitAction;
void createMenu();
private slots:
//--------------------
void showNormal();
};
#endif // QTBUTTON_H
//----------------------------
其次,qtButton.cpp程序如下
#include "qtbutton.h"
//------------------------------
qtButton::qtButton(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
//---------------------
createMenu();
if (!QSystemTrayIcon::isSystemTrayAvailable())
{
return;
}
myTrayIcon = new QSystemTrayIcon(this);
myTrayIcon->setIcon(QIcon(":/images/E:/testpictures/meizi.jpg"));
myTrayIcon->setToolTip(" Qt Tray Function");
myTrayIcon->showMessage("Tray", "Tray Manage", QSystemTrayIcon::Information, 10000);
myTrayIcon->setContextMenu(myMenu);
myTrayIcon->show();
}
qtButton::~qtButton()
{
}
void qtButton::createMenu()
{
restoreWinAction = new QAction("restore(&R)", this);
quitAction = new QAction("quit(&Q)", this);
connect(restoreWinAction, SIGNAL(triggered()), this, SLOT(showNormal()));
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
myMenu = new QMenu((QWidget*)QApplication::desktop());
myMenu->addAction(restoreWinAction);
myMenu->addSeparator();
myMenu->addAction(quitAction);
}
void qtButton::showNormal()
{
this->show();
}
void QWidget::changeEvent(QEvent *e)
{
if ((e->type() == QEvent::WindowStateChange) && this->isMinimized())
{
this->hide();
}
}
其运行结果如下:
首先,qtButton.h中有:
#ifndef QTBUTTON_H
#define QTBUTTON_H
#include <QtWidgets/QMainWindow>
#include "ui_qtbutton.h"
//-------------------------------
#include<qsystemtrayicon.h>
#include<qmenu.h>
class qtButton : public QMainWindow
{
Q_OBJECT
public:
qtButton(QWidget *parent = 0);
~qtButton();
private:
Ui::qtButtonClass ui;
//---------------------------------
QSystemTrayIcon *myTrayIcon;//Tray 托盘
QMenu *myMenu;
QAction *restoreWinAction;
QAction *quitAction;
void createMenu();
private slots:
//--------------------
void showNormal();
};
#endif // QTBUTTON_H
//----------------------------
其次,qtButton.cpp程序如下
#include "qtbutton.h"
//------------------------------
qtButton::qtButton(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
//---------------------
createMenu();
if (!QSystemTrayIcon::isSystemTrayAvailable())
{
return;
}
myTrayIcon = new QSystemTrayIcon(this);
myTrayIcon->setIcon(QIcon(":/images/E:/testpictures/meizi.jpg"));
myTrayIcon->setToolTip(" Qt Tray Function");
myTrayIcon->showMessage("Tray", "Tray Manage", QSystemTrayIcon::Information, 10000);
myTrayIcon->setContextMenu(myMenu);
myTrayIcon->show();
}
qtButton::~qtButton()
{
}
void qtButton::createMenu()
{
restoreWinAction = new QAction("restore(&R)", this);
quitAction = new QAction("quit(&Q)", this);
connect(restoreWinAction, SIGNAL(triggered()), this, SLOT(showNormal()));
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
myMenu = new QMenu((QWidget*)QApplication::desktop());
myMenu->addAction(restoreWinAction);
myMenu->addSeparator();
myMenu->addAction(quitAction);
}
void qtButton::showNormal()
{
this->show();
}
void QWidget::changeEvent(QEvent *e)
{
if ((e->type() == QEvent::WindowStateChange) && this->isMinimized())
{
this->hide();
}
}
其运行结果如下:
相关文章推荐
- qt设置登录按钮点击后不可用变灰的立即执行
- Qt 学习之路 2(84):Repeater
- 5.60的QT移植到arm板(2)
- vs2005编译QT4.5版本
- QT:国内获得授权的QT镜像地址.
- Qt连接Oracle数据库常见问题
- QtQml 应用程序的性能考虑与建议(来自小V的翻译)
- Qt布局管理-堆栈窗体QStackedWidget类
- Qt运行提示QGtkStyle was unable to detect the current GTK+ theme.解决方法
- Qt:QFile类实例源代码(读写文件)
- Qt---QTcpSocket连接http服务器
- Qt学习笔记
- Qt---安装
- Qt下重做右键菜单
- Qt之操作Excel
- RGB32
- 机器人操作系统ROS Indigo 入门学习(9)——理解ROS rqt_console和 roslaunch
- Qt 设置对话框背景(使用调色板,设置它的画刷,画刷可以是图片)
- Qt: qt中获取文件路径和文件名
- QSlider的qss美化