当前位置: 首页 > news >正文

网站登录人数实时更新如何做阿里巴巴怎么做企业网站宣传

网站登录人数实时更新如何做,阿里巴巴怎么做企业网站宣传,国际热点新闻2020,素材网站源码文章目录 在 Qt 中使用 QLabel 设置 GIF 动态背景本文食用注意目标实现步骤1. 准备工作2. 修改头文件 widget.h3. 实现构造函数和析构函数4. 调整背景大小5. 完整代码分析6. 运行程序 总结 在 Qt 中使用 QLabel 设置 GIF 动态背景 在 Qt 中,如果希望在窗口中设置一…

文章目录

      • 在 Qt 中使用 QLabel 设置 GIF 动态背景
        • 本文食用注意
        • 目标
        • 实现步骤
          • 1. 准备工作
          • 2. 修改头文件 `widget.h`
          • 3. 实现构造函数和析构函数
          • 4. 调整背景大小
          • 5. 完整代码分析
          • 6. 运行程序
      • 总结


在 Qt 中使用 QLabel 设置 GIF 动态背景

在 Qt 中,如果希望在窗口中设置一个 GIF 动画作为背景,同时保留其他控件的正常显示,需要一些技巧来确保 GIF 动画铺满整个窗口并位于所有控件的底层。下面将介绍如何使用 QLabelQMovie 在 Qt 中实现这一效果。

本文食用注意

本文大部分只需粘贴复制,需改动的只有一处,即要展示GIF动图的文件地址。

目标
  • 在窗口中设置一个全屏的 GIF 动画作为背景。
  • 保证 GIF 背景不遮盖其他控件。
  • 动态调整 GIF 背景,使其随窗口大小变化。
实现步骤
1. 准备工作
  • 确保你在 Qt 工程中已经有一个用于设计 UI 的 widget.ui 文件,并且包含一个主要的窗口类,例如 Widget
  • 在项目的资源文件(.qrc)中添加要使用的 GIF 文件。
2. 修改头文件 widget.h

首先,在 widget.h 中声明必要的成员变量,包括用于显示背景的 QLabel 和用于加载 GIF 动画的 QMovie

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QLabel>
#include <QMovie>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = nullptr);~Widget();protected:void resizeEvent(QResizeEvent *event) override;private:Ui::Widget *ui;QLabel *backgroundLabel; // 用于显示背景 GIF 的 QLabelQMovie *backgroundMovie; // 用于背景的 QMovieQMovie *iconMovie;       // 用于其他动画的 QMovie
};#endif // WIDGET_H
3. 实现构造函数和析构函数

widget.cpp 中,实现 Widget 构造函数和析构函数。确保每个 QLabel 都有独立的 QMovie 实例。

#include "widget.h"
#include "ui_widget.h"
#include <QImageReader>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);// 创建 QLabel 并将其设置为 Widget 的子控件backgroundLabel = new QLabel(this);backgroundLabel->setGeometry(0, 0, this->width(), this->height()); // 初始大小backgroundLabel->setScaledContents(true); // 让 QLabel 自动缩放内容// 加载用于背景的 GIF 文件backgroundMovie = new QMovie(":/bag");//这里替换为你的GIF文件地址即可// 将 QMovie 关联到 QLabelbackgroundLabel->setMovie(backgroundMovie);// 设置 QLabel 为透明背景backgroundLabel->setAttribute(Qt::WA_TranslucentBackground, true);// 设置 QLabel 在布局的最底层backgroundLabel->lower();// 开始播放背景 GIF 动画backgroundMovie->start();// 调整背景大小,使其始终填满窗口connect(backgroundMovie, &QMovie::frameChanged, this, [=]() {// 计算缩放后的尺寸QPixmap scaledPixmap = backgroundMovie->currentPixmap().scaled(this->size(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation);backgroundLabel->setPixmap(scaledPixmap);});// 创建用于 ui->lab_icon 的 QMovie 并加载 GIF 动图iconMovie = new QMovie(":/imgs/a.gif");// 设置 QLabel 的 QMovieui->lab_icon->setMovie(iconMovie);// 启动动画iconMovie->start();connect(iconMovie, &QMovie::frameChanged, this, [=]() {// 获取当前帧并缩放QImage currentImage = iconMovie->currentImage(); // 获取当前帧QPixmap pixmap = QPixmap::fromImage(currentImage.scaled(ui->lab_icon->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation));ui->lab_icon->setPixmap(pixmap); // 设置 QLabel 的 pixmap});iconMovie->stop();// 其他代码connect(ui->bth_back, &QPushButton::clicked, this, &Widget::back);connect(ui->bth_stare, &QPushButton::clicked, this, &Widget::stare);
}Widget::~Widget()
{delete backgroundMovie;delete iconMovie;delete ui;
}
4. 调整背景大小

为了确保 GIF 背景在窗口大小变化时能动态调整,我们重载 resizeEvent

void Widget::resizeEvent(QResizeEvent *event)
{QWidget::resizeEvent(event);// 调整 QLabel 大小backgroundLabel->resize(this->size());
}
5. 完整代码分析
  • 创建 QLabel 作为背景backgroundLabel 被创建为窗口的子控件,并设置为全屏。
  • 加载并关联 QMovieQMovie 被加载并设置为 backgroundLabel 的内容,使用 setMovie 进行关联。
  • 调整大小resizeEvent 函数确保了 QLabel 和背景动画在窗口调整大小时保持同步。
  • 独立的 QMovie 实例:为了避免动画冲突,backgroundLabel 和其他动画控件如 ui->lab_icon 分别使用独立的 QMovie 实例。
6. 运行程序

main.cpp 中无需修改,只需实例化 Widget 并显示:

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

总结

通过在 Widget 中创建一个全屏的 QLabel 并将 QMovie 关联到它,可以实现一个动态的 GIF 背景。QLabel 被设置在布局的最底层,并通过重载 resizeEvent 保持动画在窗口大小变化时的同步。这样,你就可以在 Qt 应用程序中添加一个动态背景,同时不影响其他控件的显示和操作。

http://www.yayakq.cn/news/655697/

相关文章:

  • 创建一个网站要钱吗微信代运营合同
  • 资阳地网站建设深圳网站设计兴田德润信任高
  • 百度联盟网站怎么做卖普洱茶做网站
  • 深圳响应式网站公司注册一个网站多少钱?
  • 网站开发项目意义天津网站开发制作
  • 极速网站推广专家建设网站合同文档
  • 什么网站可以找手工活做深圳建设局网站注册结构师培训
  • 南通网站快速收录打开网址选择浏览器
  • 网站建设与规划学的心得体会两个域名指向同一个网站
  • 网站建设 域名 服务器linux写wordpress
  • 昆明网站建设工作室怎样做网站导购
  • 怎么改网站关键词手机网站制作时应该注意的问题
  • 对于政务网站建设的建议芸志建站怎么建立网站
  • 做静态网站工资多少抖音代运营一般收费
  • 怎么做影视类网站网站建设及维护费用
  • 永州商城网站建设wordpress文章产品
  • 网站开发大概多久网站开发软件网站开发
  • 网站建设推广文章常州网站建设书生商友
  • 上海松江水处理网站建设网站制作 南宁
  • 给单位做网站需要多少钱我有域名和云服务器怎么做网站
  • 17Z一起做网站广州站丰城市建设局网站
  • 网站开发实用技术pdfwordpress 汉化失败
  • 安徽网新网站建设网站别人做的我自己怎么续费
  • 管理员网站wordpress简码
  • 成都企业网站建设 四川冠辰科技宣城seo
  • 富锦建设局网站软件首页设计
  • 廊坊哪里有做阿里巴巴网站的wordpress修改导航栏
  • 网站账号注册程序百度人工智能开放平台
  • wordpress网站做成app十大高端网站设计
  • 做商城网站需要多大的服务器批量修改wordpress文章分类目录