您的位置:首页 > 娱乐 > 明星 > 电子信息工程就业方向_郴州seo外包_优秀营销软文范例800字_千锋教育介绍

电子信息工程就业方向_郴州seo外包_优秀营销软文范例800字_千锋教育介绍

2025/4/15 12:51:57 来源:https://blog.csdn.net/liangyuna8787/article/details/144437621  浏览:    关键词:电子信息工程就业方向_郴州seo外包_优秀营销软文范例800字_千锋教育介绍
电子信息工程就业方向_郴州seo外包_优秀营销软文范例800字_千锋教育介绍

前言

        界面在实现事件等待时,通过会显示一个转圈圈的动态图片,表示“正在加载”,事件完成之后关闭图片,QT中可以使用QMovie+QLabel完成gif动态图片的播放及关闭的效果。

效果图

功能讲解

1、加载动画

void MainWindow::addloadgif(const QString& gifpath,const QString& showmsg){QSize size = this->size();  //获取MainWindow的长宽高int rwidth = size.width();int rheight = size.height();int gif_width = 120;int gif_height = gif_width;// 创建一个标签来显示加载动画m_loadingLabel = new QLabel(this);//setGeometry(int x, int y, int width, int height) x:x坐标;y:y坐标;width:宽度;height:高度m_loadingLabel->setGeometry((rwidth-m_loadingLabel->width())/2, ((rheight - m_loadingLabel->height()) / 2)-60,gif_width,gif_height);m_msgLabel = new QLabel(showmsg,this);m_msgLabel->setAlignment(Qt::AlignCenter); // 设置文本居中// 设置字体大小QFont font = m_msgLabel->font();font.setPointSize(12); // 设置为12号字体,根据需要可以调整大小m_msgLabel->setFont(font);m_msgLabel->setGeometry((rwidth-m_msgLabel->width())/2,((rheight - m_msgLabel->height()) / 2)+60,gif_width,40);// 创建一个QMovie对象来加载GIF动画m_movie = new QMovie(gifpath); // 替换为你的GIF路径m_loadingLabel->setScaledContents(true);m_loadingLabel->setFixedSize(gif_width,gif_height);m_loadingLabel->setMovie(m_movie);m_movie->start();stopLoading();
}

图片和文字各自占用一个label,为了让label在MainWindow中间显示,通过QSize size = this->size(); 获取MainWindow的宽和高,并通过setGeometry设置具体的位置

//把两个label的位置调整到正中间
m_loadingLabel->setGeometry((rwidth-m_loadingLabel->width())/2, ((rheight - m_loadingLabel->height()) / 2)-60,gif_width,gif_height);
m_msgLabel->setGeometry((rwidth-m_msgLabel->width())/2,((rheight - m_msgLabel->height()) / 2)+60,gif_width,40);

通过QMovie加载动画,m_movie->start();是开始播放动画

 // 创建一个QMovie对象来加载GIF动画m_movie = new QMovie(gifpath); // 替换为你的GIF路径m_loadingLabel->setScaledContents(true);m_loadingLabel->setFixedSize(gif_width,gif_height);m_loadingLabel->setMovie(m_movie);m_movie->start();

2、按钮功能打开、关闭动画

在初始化函数中,创建按钮,以及调用addloadgif加载动画,按钮会触发simulateLoading槽函数

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{//ui->setupUi(this);// 设置主窗口setFixedSize(600, 400);// 创建一个布局来管理标签位置m_layout = new QVBoxLayout;// 添加一个按钮,用于模拟其他操作m_LoadingButton = new QPushButton("关闭动画", this);m_layout->addWidget(m_LoadingButton);connect(m_LoadingButton, &QPushButton::clicked, this, &MainWindow::simulateLoading);addloadgif(":/index/img/load.gif","正在处理...");
}
void MainWindow::stopLoading() {// 停止动画//m_movie->stop();//把标签隐藏起来m_loadingLabel->hide();m_msgLabel->hide();m_LoadingButton->setText("开启动画");m_openstatus = false;
}
void MainWindow::showLoading() {////m_movie->start();m_loadingLabel->show();m_msgLabel->show();m_LoadingButton->setText("关闭动画");m_openstatus = true;
}
void MainWindow::simulateLoading() {if(m_openstatus){stopLoading();}else{showLoading();}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com