qt 重新编译ui文件后,会将之前自动生成的ui_*.h文件中所修改的内容覆盖掉,如何解决?

时间:2021-07-14 19:04:14
原因:
   由于完全利用代码绘制界面的效率比较低,而利用Qt Designer制作界面,效率虽然会提高,但是一些情况下界面的效果及交互不能很好的完整的支持,所以想利用Qt Designer绘制界面中的基础控件和布局,而一些特殊的效果和交互在制作出的ui文件所生成的ui_*.h文件上,再通过代码进行绘制实现。

问题:
    由于ui文件自动生成的ui_*.h文件,会在下次编译ui文件的时候被覆盖,所以一旦有界面上的控件或布局的修改,编译ui文件后,之前所添加的代码就会丢失掉,因此想请教一下,有什么好的工作方法,可以解决这个问题?

9 个解决方案

#1


搜“预生成事件 命令行”

#2


ui.h一般不需要修改吧...好吧,我没改过.

#3


引用 1 楼 zhao4zhong1 的回复:
搜“预生成事件 命令行”

您好,我如何利用预生成事件的机制来解决qt designer中ui_*.h文件被覆盖的这个问题呢?

#4


引用 3 楼 u012412292 的回复:
Quote: 引用 1 楼 zhao4zhong1 的回复:

搜“预生成事件 命令行”

您好,我如何利用预生成事件的机制来解决qt designer中ui_*.h文件被覆盖的这个问题呢?

你在“预生成事件 命令行”中填写你的批处理或自编代码生成的exe程序,可以根据命令行参数拷贝或更名或合并旧ui_*.h文件到新ui_*.h文件中。

#5


不管你想做什么,都不应该去改ui_*.h,因为它是根据ui文件自动生成的。
例如你有MainWindow的设计类, 会有3个文件MainWindow.h MainWindow.cpp MainWindow.ui
如果你想用代码改写什么,应该去MainWindow.cpp

#6


多谢各位的意见,是我对qt designer工作流程不熟悉的原因才导致问题的出现,现在已经熟悉了它的工作流程及使用方法,这个问题是不存在的。谢谢大家

#7


你是怎么解决的,能告诉我一下吗 ?  我也遇到了同样的问题,但是不知道如何解决

#8


楼主,你好。
可以使用继承的方法,避免被覆盖的问题。
基础UI通过绘制ui文件实现。自定义的方法以及个性需求,通过继承实现。
楼主如果是使用qt5的话,应该不会有这个问题。

#9


建议要添加控件在自己写的源文件里加,不要在ui文件里加

#1


搜“预生成事件 命令行”

#2


ui.h一般不需要修改吧...好吧,我没改过.

#3


引用 1 楼 zhao4zhong1 的回复:
搜“预生成事件 命令行”

您好,我如何利用预生成事件的机制来解决qt designer中ui_*.h文件被覆盖的这个问题呢?

#4


引用 3 楼 u012412292 的回复:
Quote: 引用 1 楼 zhao4zhong1 的回复:

搜“预生成事件 命令行”

您好,我如何利用预生成事件的机制来解决qt designer中ui_*.h文件被覆盖的这个问题呢?

你在“预生成事件 命令行”中填写你的批处理或自编代码生成的exe程序,可以根据命令行参数拷贝或更名或合并旧ui_*.h文件到新ui_*.h文件中。

#5


不管你想做什么,都不应该去改ui_*.h,因为它是根据ui文件自动生成的。
例如你有MainWindow的设计类, 会有3个文件MainWindow.h MainWindow.cpp MainWindow.ui
如果你想用代码改写什么,应该去MainWindow.cpp

#6


多谢各位的意见,是我对qt designer工作流程不熟悉的原因才导致问题的出现,现在已经熟悉了它的工作流程及使用方法,这个问题是不存在的。谢谢大家

#7


你是怎么解决的,能告诉我一下吗 ?  我也遇到了同样的问题,但是不知道如何解决

#8


楼主,你好。
可以使用继承的方法,避免被覆盖的问题。
基础UI通过绘制ui文件实现。自定义的方法以及个性需求,通过继承实现。
楼主如果是使用qt5的话,应该不会有这个问题。

#9


建议要添加控件在自己写的源文件里加,不要在ui文件里加