单击QToolButtoon以显示小部件。 小部件包含一个按钮,单击该按钮可开始播放动画,动画播放结束时发送finish信号,通知关闭窗口的函数关闭当前窗口。
单击按钮播放此动画
直接拖动控件以完成布局
上传代码:
main.cpp
# include ' widget.h ' # includeqapplicationintmain (int argv,char *argv[] () qapplicationa ) argc,argv ); 小部件w; w.show (; return a.exec (; }构件. h
# ifndef构件_ h # define构件_ h # includeqwidget # include ' cartoon构件. h ' Qt _ begin _ namespacenamespaceui { ~小部件(); 私有slots : void on _ toolbutton _ clicked (; private : cartoon构件* cartoon构件; UI:3360小部件*UI; (; # endif//构件_ h构件. CPP
# include '构件. h ' # include ' ui _构件. h '构件33603360构件(q构件parent ) : q构件(parent ),} } void构件:3360 on _ toolbutton _ clicked () { cartoon构件=new cartoon构件; cartoon构件- show (; } ui _构件. h
如果可以自己拖动控件,则不需要此头文件。 创建一个小部件就可以了
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * createdby : qtuserinterfacecompilerversion5. 13.2 *。 allchangesmadeinthisfilewillbelostwhenrecompilinguifile! * * * * * * * * * * * * * * * * * * * * * * * * * * * * includeqtwidgets/qapplication # includeqtwidgets/qlabel # voidsetupui (q构件*构件if )构件-对象名称(.isEmpty ) )构件-设置对象名称(qstring 33603360 from构件- ) label=新qlabel (小部件); 标签集对象名称(qstring :3360 from utf8(label ); 标签集几何(q rect ) 220、280、41、30 ); toolbutton=newq toolbutton (构件; toolbutton-set object name (qstring :3360 from utf8(' toolbutton ' ); 工具集几何(q重置) 150、180、200、111 ); toolbutton-settoolbuttonstyle (Qt :3360 toolbuttonicononly );
toolButton->raise(); label->raise(); retranslateUi(Widget); QMetaObject::connectSlotsByName(Widget); } // setupUi void retranslateUi(QWidget *Widget) { Widget->setWindowTitle(QCoreApplication::translate("Widget", "Widget", nullptr)); label->setText(QString()); toolButton->setText(QString()); } // retranslateUi};namespace Ui { class Widget: public Ui_Widget {};} // namespace UiQT_END_NAMESPACE#endif // UI_WIDGET_Hcartoonwidget.h
#ifndef CARTOONWIDGET_H#define CARTOONWIDGET_H#include <QWidget>#include <QMovie>namespace Ui {class cartoonWidget;}class CartoonWidget : public QWidget{ Q_OBJECTpublic: explicit CartoonWidget(QWidget *parent = nullptr); ~CartoonWidget();private slots: void on_toolButton_clicked(); void closeWidget();private: Ui::cartoonWidget *ui; QMovie *movie;};#endif // CARTOONWIDGET_Hcartoonwidget.cpp
#include "cartoonwidget.h"#include "ui_cartoonwidget.h"#include <QThread>#include <QApplication>CartoonWidget::CartoonWidget(QWidget *parent) : QWidget(parent), ui(new Ui::cartoonWidget){ ui->setupUi(this); movie = new QMovie(":/E:/ProjectCode/CXPM/cxpm/PrinterUI/image/printImage/longPressReturn.gif"); QImage img(":/E:/ProjectCode/CXPM/cxpm/PrinterUI/image/printImage/longPressReturn.gif"); ui->label->setGeometry(160, 610, img.width(), img.height()); ui->label->setMovie(movie); connect(movie, &QMovie::finished, this, &CartoonWidget::closeWidget);}CartoonWidget::~CartoonWidget(){ if (movie != nullptr) { delete movie; } delete ui;}void CartoonWidget::on_toolButton_clicked(){ ui->toolButton->hide(); movie->start(); for (int i = 0; i < 2500; i += movie->speed()) { QCoreApplication::processEvents(); QThread::usleep(static_cast<unsigned long>(500 * movie->speed())); } movie->finished();}void CartoonWidget::closeWidget(){ this->close();}ui_cartoonwidget.h
能自己拖控件的话,这个头文件也不需要了,建一个widget程序就可以了
运行效果如下:
点击弹出from窗口
点击中间的按钮开始播放动画
动画播放结束后此窗口被关闭。
需要源代码的自己点一下下载,免费的
https://download.csdn.net/download/shejun6/13217635