网站怎么做虚拟连接,wordpress主题图片消失,开发一块地需要多少钱,网址导航浏览器下载文章目录 一、前言二、使用1.FormLoading.h2.FormLoading.cpp 一、前言
项目中在下发指令时#xff0c;结果异步返回#xff0c;可能需要一段时间#xff0c;因此需要用到加载动画。 用的比较简单#xff0c;就是新建Widget子窗口#xff0c;放一个Label#xff0c;使用… 文章目录 一、前言二、使用1.FormLoading.h2.FormLoading.cpp 一、前言
项目中在下发指令时结果异步返回可能需要一段时间因此需要用到加载动画。 用的比较简单就是新建Widget子窗口放一个Label使用QMovie在Label中播放GIF。 当下发指令时就打开子窗口显示加载过程同时开启一个定时器如果在定时器触发超时信号或超时之前收到结果则隐藏加载过程子窗口并关闭定时器。
二、使用
1.FormLoading.h
#ifndef FORMLOADING_H
#define FORMLOADING_H#include QWidget
#include QMovie
#include QLabelnamespace Ui {
class FormLoading;
}class FormLoading : public QWidget
{Q_OBJECTpublic:explicit FormLoading(QWidget *parent 0);~FormLoading();void startAnimation();void stopAnimation();protected:void paintEvent(QPaintEvent *p1);private:Ui::FormLoading *ui;QMovie *m_pMovie;QLabel *m_pLabel;
};#endif // FORMLOADING_H2.FormLoading.cpp
#include formloading.h
#include ui_formloading.h
#include QVBoxLayout
#include QPainter
#include QBitmap
FormLoading::FormLoading(QWidget *parent) :QWidget(parent),ui(new Ui::FormLoading)
{ui-setupUi(this);// 设置窗口置顶和无边框this-setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint);// 设置窗口透明用来支持圆角样式属性this-setAttribute(Qt::WA_TranslucentBackground);// 设置模态对话框this-setWindowModality(Qt::ApplicationModal);setFixedSize(350, 280);m_pMovie new QMovie(:/images/loading.gif);m_pLabel new QLabel(this);m_pLabel-setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);// 设置背景透明m_pLabel-setAutoFillBackground(true);//m_pLabel-setStyleSheet(width:150px;border-radius:10px; background-color: rgb(255, 255, 255););m_pLabel-setStyleSheet(background-color: rgba(255, 255, 255, 0););m_pLabel-setMovie(m_pMovie);QVBoxLayout *pLayout new QVBoxLayout(this);pLayout-addWidget(m_pLabel);setLayout(pLayout);
}FormLoading::~FormLoading()
{delete ui;if(m_pMovie ! nullptr){delete m_pMovie;}if(m_pLabel ! nullptr){delete m_pLabel;}
}// 绘图事件
void FormLoading::paintEvent(QPaintEvent *p1)
{//绘制样式QStyleOption opt;opt.init(this);QPainter p(this);style()-drawPrimitive(QStyle::PE_Widget, opt, p, this);//绘制样式QBitmap bmp(this-size());bmp.fill();QPainter painter(bmp);painter.setPen(Qt::NoPen);painter.setBrush(Qt::black);painter.setRenderHint(QPainter::Antialiasing);painter.drawRoundedRect(bmp.rect(), 15, 15);setMask(bmp);
}void FormLoading::startAnimation()
{m_pMovie-start();
}void FormLoading::stopAnimation()
{m_pMovie-stop();
}