qt中main函數中的exec()作用總結

在qt中的main函數中大家總會看到一個exec()函數的調用方式,一般存在於函數的最後一行用來作爲返回使用。

eg1:

int main(int argc,char * argv[])
{
    QApplication a(argc,argv);
    MainWindow w;
    w.show();
    return a.exec();
}

一般看到的都是用來直接在main函數中進行做返回使用,main函數中做函數返回值都是返回給系統的,所以就明白這個exec()的作用肯定跟系統處理有關。

可以看到main函數傳入的兩個參數直接被qt的QApplication的a對象進行了接受,這就是main函數開始就把控制權交給了QT了,中間定義一個w對象,並調用自身函數進行顯示。然後直接return a.exec()處於一個循環等待事件的狀態,接下來就等待接受用戶和系統的消息並進行處理,裏面就包含所謂的信號槽機制。當應用程序退出時比如調用exit()時,exec()函數的值就會返回。

eg2:

if(my1.exec()==QDialog::Accepted)
{
    xxxxxx具體事件的處理
}

 這裏也可以看出他就是等待處理一個命令,my1.exec一直循環等待,當跳出來一個對話框,你選擇了接受後,那麼就進入if裏面進行具體事件的處理。

return 0 和return a.exec()進行了對比

那麼爲什麼這裏不進行直接return 0 呢,比如像常見的c/c++語言main函數中都是直接return 0 的。其實這裏就是qt作爲設計界面中心了,直接return 0 就達不到事件循環並顯示的效果,程序直接退出了,而exec就是在這裏進行了循環一直循環處理着用戶和系統的事件。

qt中main函數開始就只是進行一個初始化工作,然後將控制權交給qt,接下來所有事件的處理就只剩下qt的事件循環處理了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章