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的事件循环处理了。

发布了23 篇原创文章 · 获赞 4 · 访问量 9965

猜你喜欢

转载自blog.csdn.net/hxp1994/article/details/102673538