Qt 编译运行后界面不更新(转)

问题描述
在使用Qt进行界面设计时,我们经常要修改界面,但有时会莫名其妙的遇到明明修改了界面,运行后界面不更新的问题。初学者遇到这类问题时,往往不知所措,百度也不太容易找到解决办法,通常是重新构建、Debug和Release切换、qmake等各种方式搭配使用,但并不一定解决问题。本文从问题分析入手,帮助大家理解并解决问题。

问题分析
在分析问题前,我们先看下Qt源码和生成文件的目录中,有关界面文件的结构。假设我们选择的是Release编译,勾选Shadow build,如下图所示,会在源码所在根目录自动生成一个Release文件夹,所有的生成文件都会存放在该文件,包括应用程序.exe

在这里,请注意,我们要关注的目标是ui_mainwindow.h文件,问题原因也在这里。点开所有文件目录,我们发现,有两处都有ui_mainwindow.h文件,分别在源码目录、MinGW_32bit-Release目录,测试可发现,后者在界面修改并运行后实时更新,而前者不一定更新。源码目录的ui_mainwindow.h文件没更新,这就是导致问题的根本原因。

问题解决
既然找到了原因,解决问题的方向也就比较明确了,那就是更新源码目录的ui_mainwindow.h文件。这里给出两个解决方法。

方法一:替换源码目录的ui_mainwindow.h文件
既然MinGW_32bit-Release目录的ui_mainwindow.h文件可以随界面更新,那么这个文件复制到源码目录,替换掉原来的ui_mainwindow.h文件,即可解决问题。

方法二:根治法,修改.pro路径,指向更新文件
既然MinGW_32bit-Release目录的ui_mainwindow.h文件可以随界面更新,那么把编译运行调用的UI文件指向更新的ui_mainwindow.h,即可解决问题。操作步骤:

.pro文件,增加 UI_DIR=./UI,是的UI路径指向相对路径(MinGW_32bit-Release目录),该目录的ui_mainwindow.h实时更新;
删除源码目录中的ui_mainwindow.h;
清理项目,重新qmake,重新构建。
== 注意:若Debug中有文件,也一并清理或手动删除==

æ¸ç项ç®ä¸éæ°æ建

至此,以后再不会被界面不更新的问题困扰。

猜你喜欢

转载自blog.csdn.net/wei375653972/article/details/88757741