我注意到,如果我对.ui文件进行了更改(例如添加一个PushButton小部件)并编译我的项目(其中包含该.ui文件),那么在编译期间会自动在.h文件中添加相应的条目(例如PushButton小部件)(在我编辑的.ui文件的类的.h文件的public:下添加QPushButton *examplePushButton行)。
我只是想知道这是怎么回事。首先,Qt如何知道要将行添加到哪个文件中(假设是Qt以某种方式执行此操作)?在编译过程中发生了什么导致了这种情况呢?很有趣。任何帮助都是非常感谢的。
发布于 2019-06-08 03:53:04
由QtCreator静默加载的构建系统运行uic.exe工具,该工具将.ui文件“编译”成.h文件(任何编译器都能理解,但他们不理解.ui格式)。
在任何正确配置为使用Qt的IDE中的任何构建系统中,您都会体验到这一点。对于moc生成(用于信号/时隙管理),它也执行相同的操作。
要知道是否必须运行uic,它只需检查时间戳。如果.h比.ui旧,则意味着需要重新生成.h。这与编译器用来决定是否必须编译.cpp (如果不存在.obj/.o文件或它是否比.cpp文件旧)的机制是相同的。
https://stackoverflow.com/questions/56500477
复制相似问题