QT修改UI后运行不更新的问题

文章描述了一个在QtCreator中修改UI后,qmake无法自动更新页面的问题。开发者发现需要手动删除Makefile及其相关文件来强制更新。尝试勾选Shadowbuild未解决问题,最终解决方案是每次运行前进行重建。代码修改则可直接运行生效,但UI改动仍需此额外步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

qt creator ui界面修改后运行不产生作用(本质分析)
参考了上述文章(在这里夸一下这篇文章,写的很好)对照自己的问题发现我的情况是:

  • .pro文件里包含了xx.ui文件,这没错;
  • ui_xx.h文件确实也根据UI修改的控件修改了代码,这也没错;
  • qmake依然没法做到更新页面
  • 删除Makefile,Makefile.debug,Makefile.Release后重新qmake可以更新页面。但问题在于再次修改UI控件后使用qmake依然不能更新,意思每调试一次就得删除一次上述文件才能执行更新,这也太麻烦了!

后来又查阅了一些资料同时尝试了一些别的方法比如勾选Shadow build,也没用。
最后得到一个方法:每次运行前重新构建一下,就可以了。
虽然也有点麻烦,但比删除文件方便些。
目前暂时还不知道我这种情况如何做到更简便。


新发现,代码修改可以直接运行生效,UI修改的还是得重新构建

### Qt5 UI界面修改后的处理方法 当Qt5项目的UI界面被修改后,为了确保这些更能够在程序中生效并顺利编译运行,有几种常见的方式可以采取。 对于`xxx.ui`文件来说,这是一个XML描述的图形化界面布局文件,在每次动之后理论上应该通过uic工具转换成对应的头文件如`ui_xxx.h`以便于编译器识别。然而有时会出现即便清理了构建产物再重新建立也无法触发这一过程的情况[^1]。此时可以直接调用命令行中的uic指令手动指定输入输出路径来强制生成最新的`.h`文件: ```bash uic -o ui_widget.h widget.ui ``` 另外一种解决方案涉及到调整构建配置选项——即关闭影子构建(Shadow Build)。所谓影子构建是指在一个独立目录下完成整个工程的所有中间件以及最终目标文件创建的过程;这样做有助于保持源码树整洁干净受干扰。但是这也会带来一个问题就是可能阻止了一些必要的资源更新机制正常工作。因此可以在设置里暂时去掉这个勾选项让IDE知道需要重新解析所有的UI定义从而达到预期效果[^2]。 如果上述两种方式都能解决问题,则还可以考虑更彻底的办法比如移除Makefile及其变体等临时文件后再执行一次完整的qmake操作以重建整个项目结构。过需要注意的是这种方法比较激进可能会破坏某些自定义设定所以应当谨慎行事[^3]。 综上所述,针对同情况可以选择合适的方式来应对UI变更无法反映的问题,具体取决于个人开发习惯和实际环境差异等因素影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值