您的位置:首页 > 编程语言 > Qt开发

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();
}
}
其运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: