'main.cpp'在Qt项目中的作用

LCs*_*Csa 3 c++ qt

在Qt项目中,我们通常会找到一个project.pro文件,main.cpp以及几个标题,源和*.ui文件,其中包含将生命和功能注入应用程序/项目的所有资源.如果还有"按下按钮显示'Hello,world!'",则可能存在用于存储数据和配置文件等的目录.

我的问题是(尽管确切的答案取决于具体情况):

main.cpp在Qt项目(Qt Widgets Application)中的一般作用是什么?


说清楚我的意思:

  1. main.cpp开始申请的唯一目的吗?
  2. 如果没有,那么典型的任务是main.cpp什么?
  3. 说到配置文件 - 考虑应用程序有一个主窗体,它可以(也可能是由主窗体实例化的其他类/对话框)来了解从文件中检索的一些配置数据.初始化是发生在main.cpp或在MainForm.简而言之:"设置......"应放在哪里(根据当前的问题)?
  4. 无论你想说什么......

Hos*_*ork 6

(注意:一个完整​​的答案应该包含@ thokra的注释,也就是说这main.cpp是一个文件名,并且具有该名称的文件中程序入口点的外观仅仅是约定.但它在Qt程序中是一个相当完善的约定.和C++一般来说,尝试将程序的入口点放在具有该名称的文件中.)

一类是全局挂钩和设置的注册.考虑qInstallMessageHandlerQTextCodec :: setCodecForCStrings之类的东西.

您的应用程序想要认为理所当然的任何非Qt库的初始化将是另一个领域.

如果你的程序有一个只创建和销毁一次的主窗口对象,那么在它的构造函数/析构函数中放置"运行一次"代码似乎同样适合.但问问自己,你的应用程序究竟是什么,它只有一个主窗口.为什么它不能在同一个过程中有两个?即使这不是今天要求的一部分,它也可以暗示建筑边界.

我将从个人经验中提到,如果你尝试创建一个派生自QApplication的类,然后将你的全局运行一次代码放在该派生类的构造函数和析构函数中,那比它听起来更棘手(特别是如果你生成线程并在该构造函数中创建小部件).所以我认为在大多数情况下你都不应该从QApplication派生出来.我坚持使用它是因为我正在制作一个应用程序框架 ......但是要避免这种情况,并且你的run-once代码会进入main.cpp.