这是第六波控件
首先,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();
}
}
其运行结果如下: