如何将Qt Designer 产生的*.UI文件转换成QT可以使用的*.H和*.CPP
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将Qt Designer 产生的*.UI文件转换成QT可以使用的*.H和*.CPP相关的知识,希望对你有一定的参考价值。
搜到的:
把UIC.exe和你要转换的xxx.ui文件拷贝到同一目录。
开始菜单,运行CMD
进入uic.exe和xxx.ui的目录,运行以下命令:
uic xxx.ui -o xxx.h 生成.h文件
uic xxx.ui -i xxx.h -o xxx.cpp 生成.cpp文件
生成头文件没问题,但在生成cpp文件时,给了这么个提示(如图),并且没有生成.cpp文件!
我是在qt designer中设计的ui,项目是在vs2010里创建的..
PS:为什么vs不能自动调用qt的uic编译ui自动生成.h 和.cpp呢?我已经nmake了呀,几个小时搞了等于没搞嘛!
同学你对Qt不熟吧.ui 文件是不会生成.cpp文件的.ui文件就会生成一个ui_***.h文件.
有了这个ui_***.h文件就足够了.里面已经包含了所有的布局信息.
要用这个布局文件.你就要新建另一个 ***.h和***.cpp.然后在 ***.h中添加 ui_***.h.
并利用ui_***.h 定义一个变量叫ui.
在***.cpp中.使用 ui->setupUI();这就完成了添加布局信息的过程了.
要注意的是新建的类必须和ui中的基础类一致. 比如ui中的布局基于QDialog 你就不可以新建一个继承于QMainWindow的类来添加ui中的布局信息..追问
嗯~刚上手
你说Qt会根据ui文件自动生成一个ui_***.h文件,我没有看到啊,难道指的是我自己用uic编译得到的.h文件么?
另外,还有一最大的疑问:
我知道VS的c++编译器和Qt的不同,我想这也就是网上那么多人说装了vs add-in,还要重新configure、nmake Qt安装包,从而使得VS可以编译qt程序,对吧?!那么都这么做了,为什么还要用uic来编译ui生成.h呢,那如果新建的页面多了,或者修改了ui,岂不是要重新编译和改很多代码?
要知道你那个 uic 编译得到的.h文件是不是就是包含布局信息的头文件很容易,你只需要打开它看看里面有没有你刚刚拖拽进Qt Designer 的控件和 setupUi() 这个函数就ok了.
对于 VS 配合 Qt 库的编码应该如何做不好意思我没办法帮你解答, 我用的是 Qt Designer + Qt Creator. Qt Creator 会自己管理uic 每次ui有改变就自动去修改布局文件.h. 但是缺点就是编译速度非常慢...
uic xxx.ui -o xxx.h 生成.h文件
uic xxx.ui -i xxx.h -o xxx.cpp 生成.cpp文件
QT通过 QT designer 可以生成 ui文件
.生成方式:QT通过 QT designer 可以生成 ui文件 (.ui && .ui.h)
2.UI文件内容: 以XML方式记录了QT designer生成的界面的相关内容,大体可以分为如下内容
widget属性,其内容(图形元素, layout。。)的相关属性
头文件
变量
槽
函数
3. 通过UIC (user interface compiler)可以把UI文件内容翻译成标准.h, .cpp文件
uic使用方法:
生成声明(.h)文件: uic [options] <file>
uic [options] -subdecl <classname> <headerfile> <file>生成实现(.cpp)文件:uic [options] -impl <headerfile> <file>
uic [options] -subimpl <classname> <headerfile> <file选项:
-o file - write output to ‘file‘ rather than to stdout.
-nofwd - omit forward declarations of custom classes in the generated header file. This is necessary if typedef classes are used.
-tr func - use func(sourceText, comment) rather than trUtf8(sourceText, comment) for internationalization.
4.使用: (IN Makefile)
%.h: %.ui uic $< -o [email protected] %.cpp: %.ui uic -impl $*.h $< -o [email protected]注:
.ui.h 文件包含ui文件功能实现部分(slot,function,include,variable)
更改.ui.h文件后(如:加入一个槽),可能.ui文件没有做自动改变,这样会导致编译失败,需手动更改.ui文件
QT 的Makefile会根据.ui文件生成相应源代码,而不是.ui.h文件
5.更改 .ui文件中的中文(.ui文件中中文为utf8, vi中显示不正常)
iconv -f utf8 -t gbk input.ui > output.ui.gbk
vi output.ui.gbk
iconv -f gbk -t utf8 output.ui.gbk > input.ui
以上是关于如何将Qt Designer 产生的*.UI文件转换成QT可以使用的*.H和*.CPP的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 Qt Designer 中使用来自 Qt Designer 的 .ui 文件作为自定义小部件?
pyqt5通过qt designer 设计方式连接多个UI图形界面
Qt Designer - 只生成一个带有多个小部件的 .ui 文件