程序启动画面一般用于显示软件信息(名称、作者、版权等)以及减少程序加载过程中的枯燥感。
在Qt中,可以通过QSplashScreen类来为应用程序添加一个启动画面,它会在应用程序的主窗口出现前显示一个图片,并且可以在图片上显示想要输出的信息。
下面是一个简单的例子:
- #include <QApplication>
- #include <QTextEdit>
- #include <QSplashScreen>
- #include <QtTest>
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
- QSplashScreen *splash = new QSplashScreen;
- splash->setPixmap(QPixmap(":/images/splash.png"));
- splash->show();
- Qt::Alignment topRight = Qt::AlignRight | Qt::AlignTop;
- splash->showMessage(QObject::tr("Setting up the main Window..."),
- topRight,
- Qt::red);
- QTest::qSleep(3000);
- QTextEdit *textEdit = new QTextEdit;
- splash->showMessage(QObject::tr("Loading modules..."),
- topRight,
- Qt::blue);
- QTest::qSleep(3000);
- textEdit->show();
- splash->finish(textEdit);
- delete splash;
- return app.exec();
- }
注意1:
启动画面图片是通过setPixmap()来指定的,在这里图片是一个资源,因此,需要把图片添加到资源文件(.qrc)中;否则,看不到启动画面。
注意2:
在例子程序中,使用了QTest::qSleep()函数,因此,需要包含头文件<QTest>,并在.pro文件中,加入
CONFIG += qtestlib
最终效果如下:
1. [代码]cpp代码
01 |
#include <QtGui/QtGui> |
02 |
#include <QtGui/QPixmap> |
03 |
#include <QtGui/QSplashScreen> |
04 |
#include "ui_browser.h" |
06 |
int main( int argc, char **argv)
|
08 |
QApplication app(argc, argv);
|
10 |
QPixmap pixmap( "splash.png" );
|
11 |
QSplashScreen *splash = new QSplashScreen(pixmap);
|
14 |
QMainWindow *form = new QMainWindow;
|
17 |
ui.textBrowser->setSource(QString( "files:///C:/Qt/4.1.2/doc/html/index.html" ));
|
2. [代码]而采用计时器来控制显示时间的话,可用下面方法自己制作SplashWindow。 跳至 [1] [2] [全屏预览]
01 |
#include <QtGui/QtGui> |
02 |
#include <QtGui/QDialog> |
03 |
#include <QtCore/QTimer> |
04 |
#include "ui_browser.h" |
06 |
int main( int argc, char **argv)
|
08 |
QApplication app(argc, argv);
|
12 |
QMainWindow *form = new QMainWindow;
|
15 |
ui.textBrowser->setSource(QString( "files:///C:/Qt/4.1.2/doc/html/index.html" ));
|
18 |
QObject::connect(&timer, SIGNAL(timeout()), form, SLOT(show()));
|
19 |
QObject::connect(&timer, SIGNAL(timeout()), &dialog, SLOT(accept()));
|
一个样例程序,往往有一个启动界面一个方面是显得你的程序不那么呆板,同时你的一些初始化过程也可以在这个过程中完成 QT当中提供了:一个类来实现
#include #include "sortdialog.h" #include //提供启动画面的类
int main(int argc,char *argv[]) { QApplication app(argc,argv); QSplashScreen *splash = new QSplashScreen; splash->setPixmap(QPixmap("shot.png")); //这里提供在启动时显示的画面 splash->show(); Qt::Alignment topRight = Qt::AlignRight | Qt::AlignTop; splash ->showMessage(QObject::tr("Setting up the main window....."),topRight,Qt::red); // while(1); for(int i=0;i<1000;i++) { splash->repaint(); }//这里做一个等待,如果有设置程序可以写在这里 SortDialog *dialog = new SortDialog; //这里生成主程序 splash -> showMessage(QObject::tr("Loading modules..."),topRight,Qt::red); //loadModules(); for(int i=0;i<1000;i++) { splash->repaint(); } splash ->showMessage(QObject::tr("Establishing connecting....."),topRight,Qt::red); //establishConnections();
dialog ->setColumnRange('C','F'); for(int i=0;i<1000;i++) { splash->repaint(); } splash->finish(dialog); dialog -> show();
delete splash;//删掉,回收内存 return app.exec(); }
|