我注意到,如果我对我的 .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/