天天看点

Ubuntu下QT5项目中mainwindow窗口控件不更新的解决办法笔记(以及uic命令用不了的解决办法)

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

Ubuntu下QT5项目中mainwindow窗口控件不更新的解决办法笔记(以及uic命令用不了的解决办法)

然后尝试了重新构建项目,运行后并没有更新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

继续阅读