1. 程式人生 > >Qt 實現啟動介面,3秒後自動消失

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秒後會自動消失。