插入动画及程序启动画面

来源:互联网 发布:mac版本网游 编辑:程序博客网 时间:2024/05/17 04:23

界面设计如下:(第一个页面为主页面mainwindow.ui,第二个页面为弹出对话框about.ui)

mainwindow.h

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QDesktopServices>   //桌面服务#include <QUrl>#include "about.h"#include <QPixmap>#include <QSplashScreen>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();private:    Ui::MainWindow *ui;private slots:    void aboutWebSlot();//打开一个网站,使用的是默认浏览器    void aboutSoftwareSlot();//弹出子对话框};#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow){    ui->setupUi(this);    //qApp为应用程序实例化全局指针,aApp含有aboutQt()的方法    QObject::connect(ui->aboutQTAction,SIGNAL(triggered(bool)),qApp,SLOT(aboutQt()));    QObject::connect(ui->aboutWebAction,SIGNAL(triggered(bool)),this,SLOT(aboutWebSlot()));    QObject::connect(ui->aboutSoftwareAction,SIGNAL(triggered(bool)),this,SLOT(aboutSoftwareSlot()));}MainWindow::~MainWindow(){    delete ui;}void MainWindow::aboutWebSlot(){    QDesktopServices::openUrl(QUrl("www.baidu.com"));}void MainWindow::aboutSoftwareSlot(){    about *dlg=new about;    //dlg->show();//非模态对话框    dlg->exec();//模态对话框}


about.h

#ifndef ABOUT_H#define ABOUT_H#include <QDialog>#include <QMovie>#include <QDebug>namespace Ui {class about;}class about : public QDialog{    Q_OBJECTpublic:    explicit about(QWidget *parent = 0);    ~about();private:    Ui::about *ui;    QMovie *movie;private slots:    void startMovieSlot();    void stopMovieSlot();};#endif // ABOUT_H

about.cpp (gig文件"hehe.gif"与cpp文件在同一目录下)

#include "about.h"#include "ui_about.h"about::about(QWidget *parent) :    QDialog(parent),    ui(new Ui::about){    ui->setupUi(this);    this->movie=new QMovie("hehe.gif");  //加载动画片    ui->movieLabel->setMovie(this->movie); //动画片放置在Label中    this->movie->start(); //开始播放    //获取动画片帧数    qDebug()<<"这个动画片有"<<this->movie->frameCount()<<"帧";    QObject::connect(ui->startButton,SIGNAL(clicked(bool)),this,SLOT(startMovieSlot()));    this->connect(ui->stopButton,SIGNAL(clicked(bool)),this,SLOT(stopMovieSlot()));}about::~about(){    delete ui;}void about::startMovieSlot(){    this->movie->start();}void about::stopMovieSlot(){    this->movie->stop();}


main.cpp

#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){    QApplication a(argc, argv);    //设置程序启动画面    QPixmap pixmap("hehe.gif");    QSplashScreen splash(pixmap);    splash.show();    //程序空跑,为启动画面分配时间    for(long i=0;i<80000000;i++);    MainWindow w;    w.show();    splash.finish(&w); //结束启动画面    return a.exec();}


原创粉丝点击