最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

QT開(kāi)發(fā)應(yīng)用程序的歡迎界面實(shí)例

 更新時(shí)間:2017年08月21日 09:08:29   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇QT開(kāi)發(fā)應(yīng)用程序的歡迎界面實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

主界面啟動(dòng)太慢,通常要10秒以上,所以想加個(gè)歡迎界面,等程序加載好再顯示主界面。

主界面(類(lèi)名為MainWindow)啟動(dòng)慢的原因是構(gòu)造函數(shù)需要執(zhí)行大量初始化的工作。

創(chuàng)建了Welcome類(lèi)作為歡迎界面,開(kāi)始的思路是,在main函數(shù)中先創(chuàng)建Welcome類(lèi)的對(duì)象,然后show(),對(duì)于主界面,在構(gòu)造函數(shù)將要返回時(shí)調(diào)用自己的show()方法,并且調(diào)用welcome的close()。但是歡迎界面總是只出現(xiàn)邊框,不顯示內(nèi)容,并且窗體的背景也是虛的。

原因分析:

在QT中,窗體的各種事件的分發(fā)是由QApplication來(lái)完成的,在main函數(shù)中,最后一行代碼是調(diào)用QApplication對(duì)象的exec()方法,這個(gè)方法執(zhí)行后,整個(gè)應(yīng)用程序的事件才能被分發(fā)處理,但是在main函數(shù)中,創(chuàng)建MainWindow實(shí)例的時(shí)候,總是會(huì)等待MainWindow的構(gòu)造函數(shù)執(zhí)行完,才會(huì)執(zhí)行到QApplication對(duì)象的exec()方法,所以在此之前歡迎界面的事件是不被響應(yīng)的,paintEvent()函數(shù)不會(huì)得到執(zhí)行,所以也就不會(huì)正常顯示出來(lái)了,當(dāng)MainWindow的構(gòu)造函數(shù)執(zhí)行完成,QApplication對(duì)象能夠處理事件分發(fā)時(shí),也不需要?dú)g迎界面顯示了,可以直接顯示主界面了。

只能想辦法讓MainWindow的構(gòu)造函數(shù)立即返回,初始化的工作留在后續(xù)處理。但是誰(shuí)來(lái)調(diào)用初始化的工作代碼呢,welcome類(lèi)的構(gòu)造函數(shù)也不能去調(diào)用它,否則一樣會(huì)很慢才能顯示出來(lái)。我的辦法是使用QTimer定時(shí)很短一段時(shí)間,自動(dòng)觸發(fā)初始化代碼的執(zhí)行,這樣不占用構(gòu)造函數(shù)的執(zhí)行時(shí)間,讓QApplication能夠盡快工作起來(lái)。

一下是簡(jiǎn)略代碼:

main.cpp

int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  //...其他代碼
  WelcomeWindow *welcome=new WelcomeWindow();
  MainWindow w(welcome);
 
  return app.exec();
}

MainWindow的構(gòu)造函數(shù)

this->welcome=welcome;
if(welcome != 0){
  welcome->show();
  timerInit=new QTimer();
  timerInit->setInterval(100);
  timerInit->setSingleShot(true);//設(shè)置Timer只觸發(fā)一次
  timerInit->start();
  connect(timerInit, SIGNAL(timeout()), SLOT(init()));
}else{
  init();
}

MainWindow的init()函數(shù)(將原構(gòu)造函數(shù)的初始化代碼放到init()里了)

if(welcome!=0){
  welcome->close();
  delete welcome;
  this->show();
}

以上這篇QT開(kāi)發(fā)應(yīng)用程序的歡迎界面實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

云浮市| 平遥县| 井陉县| 景洪市| 东丽区| 孝昌县| 运城市| 会泽县| 沁水县| 堆龙德庆县| 峨眉山市| 泰来县| 临清市| 乌拉特后旗| 梓潼县| 日喀则市| 通城县| 临西县| 苗栗县| 鸡泽县| 长宁县| 资兴市| 定兴县| 东明县| 米林县| 舒兰市| 云林县| 南江县| 宝丰县| 石城县| 文安县| 封开县| 凯里市| 神池县| 谷城县| 安徽省| 贡觉县| 宁陵县| 靖州| 简阳市| 外汇|