很多大型软件都有启动界面,把程序的部分初始化后,再显示主界面。
Qt如何实现该功能呢,例如我们在main.cpp实例化启动类,然后显示,sleep(3000), 再close窗口,这种思路目测可以,但是编写代码后发现启动界面后,控件无法显示,图片无法刷新等。那么如何实现呢?
这里我提供一种方法,用定时器来实现该需求。
添加一个QDialog, 作为启动界面,头文件如下:
#pragma once
#include <QDialog>
#include "ui_WelcomeUI.h"
#include <QTimer>
/*
软件的欢迎界面
3秒后自动消失,显示主界面
*/
class WelcomeUI : public QDialog
{
Q_OBJECT
public:
WelcomeUI(QWidget *parent = Q_NULLPTR);
~WelcomeUI();
//自定义方法,启动定时器
void StartTimer();
private:
Ui::WelcomeUI ui;
QTimer *m_pTimer;
};
cpp文件
#include "WelcomeUI.h"
WelcomeUI::WelcomeUI(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint);
m_pTimer = new QTimer(this);
m_pTimer->setSingleShot(true);
connect(m_pTimer, SIGNAL(timeout()), this, SLOT(close()));
}
WelcomeUI::~WelcomeUI()
{
}
void WelcomeUI::StartTimer()
{
m_pTimer->start(3000);
}
在main.cpp实例化该类,并显示dlg.
//欢迎界面,3秒后自动消失
WelcomeUI dlg;
dlg.StartTimer();
dlg.exec();
运行程序后,效果如下,3秒后会自动消失。