当前位置: 代码迷 >> QT开发 >> 相关QApplication
  详细解决方案

相关QApplication

热度:93   发布时间:2016-04-25 04:24:00.0
有关QApplication


#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel *label = new QLabel("Hello Qt!");
    label->show();
    return app.exec();
}

我用这个代码生成可执行文件后点击打开它,main函数的形参是多少?
int main(int argc, char *argv[])
    QApplication app(argc, argv);//这两行我不懂得什么意思,请指点.
------最佳解决方案--------------------
QApplication 相当于QT GUI线程的入口
每个QT只有一个GUI线程 就是main里的
如果你不传其他的参数 
main的实参就是你默认的函数程序名 你可以把main里的argc 和argv打出来了
由于界面设计到和OS的一些交互
如 你点击界面 事件是传给OS的  而os也需要根据你的界面来刷新
这些都是需要在一个“死循环”里进行处理的 return app.exec(); 就相当于这个死循环


------其他解决方案--------------------
main函数执行之前,主要就是初始化系统相关资源:
1.设置栈指针
2.初始化static静态和global全局变量,即data段的内容
3.将未初始化部分的赋初值:数值型short,int,long等为0,bool为FALSE,指针为NULL,等等,即.bss段的内容
4.运行全局构造器,估计是C++中构造函数之类的吧
5.将main函数的参数,argc,argv等传递给main函数,然后才真正运行main函数

当一个C/C++的源程序经过编译、链接后,会生成扩展名为.EXE的可执行文件,这是可以在操作系统下直接运行的文件,换句话说,就是由系统来启动运行的。对main()函数既然不能由其它函数调用和传递参数,就只能由系统在启动运行时传递参数了.

这个知识比较深奥了,你可以百度搜索点资料.main函数是程序的入口.在程序里我们是不可能调用main函数的,main函数的参数是由程序启动时,比如你传入了命令行参数,那么这个时候系统就把参数传递给main函数了,其他情况下我们是无法调用main函数的,他只是我们所有代码的一个入口.
------其他解决方案--------------------
引用:
C/C++ code?



123456789101112

#include <QApplication> #include <QLabel>   int main(int argc, char *argv[]) {     QApplication app(argc, argv);     QLabel *label = new QLabel("Hello Qt!");     ……

int main(int argc, char *argv[])//定义main函数,传入的参数有2,1为int型的argc,1为char型的argv数组;
QApplication app(argc, argv);//定义并初始化app方法,传入参数argc和argv
------其他解决方案--------------------
引用:
引用:C/C++ code?



123456789101112

#include <QApplication> #include <QLabel>   int main(int argc, char *argv[]) {     QApplication app(argc, argv);     QLabel *label =……


但我明明没有给main传参 为什么它自己就有了?