先说一下发现问题的背景:组长拿了组里用QT做的一个软件让我往上加几个功能,但在用designer添加完按钮之后,点击运行按钮,主窗口ui无变化。自己新创建工程的话ui可以正常同步更新。

然后尝试了重新构建项目,运行后并没有更新ui。
组长跟我说她一般的解决办法是用uic命令:把mainwindow.ui用uic生成ui_mainwindow.h,覆盖buildxxx文件夹里的文件。
命令是
uic mainwindow.ui >> ui_mainwindow.h
(这里我为了看是否能成功生成一个新的.h文件,特意把.ui文件放桌面进行操作的。如果uic出现问题,有可能会生成一个空的.h文件。成功生成后拉到工程文件夹里覆盖就可以了)
uic命令没有出现问题的朋友看到这里就可以了,此时去qt重新运行工程,可以看到ui更新了;uic出现问题的朋友可以往下看,希望下面的内容可以解决你们的问题。
一开始我输入uic后回车,会出现这样的报错:
could not exec '/usr/lib/qt5/bin/uic': No such file or directory
(这个时候你去试试qmake,一定会有类似的报错)
此时要先找到uic和qmake的位置:(qmake 同理)
输入
whereis uic
输出结果如下:
uic: /usr/bin/uic
然后切到你所获取的这个路径下
cd /usr/bin
ls -l uic
//得到
lrwxrwxrwx 1 root root 9 3月 22 23:55 uic -> qtchooser
此时可以看到uic指向qtchooser,qmake同样。
看一下qtchooser的配置信息:
./qtchooser -print-env
//得到
QT_SELECT="default"
QTTOOLDIR="/usr/lib/qt5/bin"
QTLIBDIR="/usr/lib/x86_64-linux-gnu"
发现配置文件指向的地方已经删除,所以需要更改配置文件:
先切换路径到/usr下,
find ./ | grep qtchooser
如果你安装的是qt5,则在查询到的内容里找到qt5-x86_64-linux-gnu.conf这个文件,切换到它的路径下
然后给权限、修改地址
sudo chmod 777 qt5-x86_64-linux-gnu.conf
vim qt5-x86_64-linux-gnu.conf
配置文件里的地址改称什么呢?
找到你安装qt的路径(这里拿我自己的举个例子):xxxx/QT5.11.2/5.11.2/gcc_64/bin
能看到这个bin文件夹里有qmake和uic,在这个页面打开终端,输入pwd获取当前地址,复制(快捷键是ctrl+shift+c)
打开刚才开着vim的页面把这个地址粘进去(快捷键ctrl+shift+v)
修改完成后你的配置文件里面就两行地址,大概是这样:
/home/h706/Qt5.11.2/5.11.2/gcc_64/bin
/home/h706/Qt5.11.2/5.11.2
~
~
保存并退出(提示文件不能修改的是因为刚才没给权限,就是sudo chmod的那一步你没做)
现在再去桌面那个放着.ui文件的地方打开终端,输入命令
uic mainwindow.ui >> ui_mainwindow.h
双击点开生成的.h文件,里面是整整齐齐的代码。然后把这个文件拖进工程文件夹覆盖掉旧版的,运行,ui就更新成功啦~
放一下我当时查到的资料,感谢这个大佬:https://blog.csdn.net/gdizcm/article/details/55095280?fps=1&locationNum=8