界面设计如下:(第一个页面为主页面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_OBJECT
public:
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();//模态对话框
}
#ifndef ABOUT_H
#define ABOUT_H
#include <QDialog>
#include <QMovie>
#include <QDebug>
namespace Ui {
class about;
}
class about : public QDialog
{
Q_OBJECT
public:
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();
}