Qt 實現啟動介面,3秒後自動消失
阿新 • • 發佈:2019-01-10
很多大型軟體都有啟動介面,把程式的部分初始化後,再顯示主介面。
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秒後會自動消失。