c++ - 使用 Qt Creator 调整 .ui 文件如何导致编译期间更改 .h 文件?

标签 c++ qt

我注意到,如果我对我的 .ui 文件进行更改(例如添加一个 PushButton 小部件)并编译我的项目(该 .ui 文件是其中的一部分),那么相应的条目(对于 PushButton 小部件) .h 文件中的示例)在编译期间自动添加(行 QPushButton *examplePushButton 被添加到我的 .h 文件的 public: 下,用于我的 .ui 文件的类已编辑)。

我只是想知道这是怎么发生的。首先,Qt 如何知道将行添加到哪个文件(假设它是 Qt 以某种方式执行此操作)?在编译过程中具体发生了什么导致了这种情况?这很有趣。感谢您的帮助。

最佳答案

由 QtCreator (IDE) 悄悄启动的构建系统运行 uic.exe 工具,将 .ui 文件“编译”为 a.h 文件(任何编译器都可以理解,但不理解 .ui 格式)。

在正确配置为与 Qt 一起工作的任何 IDE 中的任何构建系统中,您都会遇到这种情况。它也为 moc 生成做同样的事情(用于信号/槽管理)。

要知道是否必须运行 uic,它只需检查时间戳即可。如果.h 比.ui 旧,则意味着需要重新生成.h。这与您的编译器用于决定是否必须编译 .cpp 的机制相同(如果不存在 .obj/.o 文件或者它是否比 .cpp 文件旧)。

关于c++ - 使用 Qt Creator 调整 .ui 文件如何导致编译期间更改 .h 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56500477/

相关文章:

c++ - char(*)[20] 与 char(*Object::variable)[20] 有何不同?

c++ - 在执行 std::regex_replace 时去掉多余的空格

c++ - QString::split() 和 "\r"、 "\n"和 "\r\n"约定

ios - 使用 QtCreator 构建应用程序 iOS 时出错

c++ - C/C++ extern "C"变量编译宏

c# - 无法将结构的 Marshal 指针转换回结构

c++ - 如何在 Qt 中创建自定义车轮事件?

c++ - 取消定义符号 vtkImageViewer2::New(), QT-VTK Mac OSX 10.6.8

c++ - 尝试使用 Opencv 和 QT 构建测试

c++ - 析构函数 Qt QDialog 中的段错误