5.最小化托盘菜单的设置

1.使用到的类
QSystemTrayIcon
QMenu

setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
    sys.setIcon(QIcon("C:\\Users\\23625\\Desktop\\MyGirl\\image\\LoveToolTip.png"));//一定要设置icon不然看不见
    //设置托盘菜单
    QMenu *mMenu = new QMenu(this);
    mMenu->addAction(ui->actionClose);
    mMenu->addSeparator();
    mMenu->addAction(ui->actionOpen);
    sys.setContextMenu(mMenu);
    sys.show();


    //设置消息框
    connect(&sys,&QSystemTrayIcon::messageClicked,this,&Widget::showMessage);//点击消息框,显示主窗口
void Widget::on_actionOpen_triggered()//显示事件
{
    this->show();
}


void Widget::on_actionClose_triggered()//关闭事件
{
    this->close();
}
void Widget::showMessage()//托盘消息显示
{	sys.showMessage("Information",//消息窗口标题
                    "告白气球!",//消息内容
                    QSystemTrayIcon::MessageIcon::Information,//消息窗口图标
                    5000);//消息窗口显示时长
}
void Widget::on_pushButton_2_clicked()//隐藏到托盘
{
    this->hide();
}


在这里插入图片描述完整代码如下:

#include "widget.h"
#include "ui_widget.h"
#include <QMenu>
#include <QSound>
#include <QPalette>
#include <QBrush>
#include <QPixmap>
#include <QRect>
#include <QPainter>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
    sys.setIcon(QIcon("C:\\Users\\23625\\Desktop\\MyGirl\\image\\LoveToolTip.png"));//一定要设置icon不然看不见
    //设置托盘菜单
    QMenu *mMenu = new QMenu(this);
    mMenu->addAction(ui->actionClose);
    mMenu->addSeparator();
    mMenu->addAction(ui->actionOpen);
    sys.setContextMenu(mMenu);
    sys.show();


    //设置消息框
    connect(&sys,&QSystemTrayIcon::messageClicked,this,&Widget::showMessage);//点击消息框,显示主窗口


    //设置按钮背景颜色
    QPalette pal = this->palette();
    pal.setColor(QPalette::Button,QColor(230,156,157));
    ui->pushButton->setPalette(pal);
    ui->pushButton->setAutoFillBackground(true);
    ui->pushButton->setFlat(true);
    ui->pushButton_2->setPalette(pal);
    ui->pushButton_2->setAutoFillBackground(true);
    ui->pushButton_2->setFlat(true);






}


Widget::~Widget()
{
    delete ui;
}


void Widget::on_actionOpen_triggered()//显示事件
{
    this->show();
}


void Widget::on_actionClose_triggered()//关闭事件
{
    this->close();
}
void Widget::showMessage()//托盘消息显示
{	sys.showMessage("Information",//消息窗口标题
                    "告白气球!",//消息内容
                    QSystemTrayIcon::MessageIcon::Information,//消息窗口图标
                    5000);//消息窗口显示时长
}
//void Widget::closeEvent(QCloseEvent *event)//重写关闭事件
//{
    event->ignore();
    this->hide();
//}


void Widget::on_pushButton_clicked()//音乐播放
{


    QSound *music=new QSound("C:\\Users\\23625\\Desktop\\untitled2\\Music\\Gaobai.wav",this);
    music->play();
    //   if(loop)
    music->setLoops(400);
    ui->pushButton->setEnabled(false);


}


void Widget::on_pushButton_2_clicked()//隐藏到托盘
{
    this->hide();
}


void Widget::paintEvent(QPaintEvent *event)//重写绘画事件,设置背景图片
{
    pix.load("C:\\Users\\23625\\Desktop\\rose\\image\\mainW.jpg");
    Q_UNUSED(event);
    QRect rec = this->rect();
    QPainter pain(this);
    pain.drawPixmap(rec,pix);
}


运行结果如图所示:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值