Qt 实现启动界面,3秒后自动消失

         很多大型软件都有启动界面,把程序的部分初始化后,再显示主界面。

        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秒后会自动消失。

猜你喜欢

转载自blog.csdn.net/yao_hou/article/details/84255949