Qt问题集锦:编译运行后界面不更新

问题描述

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

问题分析

在分析问题前,我们先看下Qt源码和生成文件的目录中,有关界面文件的结构。假设我们选择的是Release编译,勾选Shadow build,如下图所示,会在源码所在根目录自动生成一个Release文件夹,所有的生成文件都会存放在该文件,包括应用程序.exe
【项目选项】,勾选Shdow build
生成的目录
在这里,请注意,我们要关注的目标是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,即可解决问题。操作步骤:

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

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

展开阅读全文

没有更多推荐了,返回首页