qt中ui文件和生成的ui_****.h谁决定谁?

时间:2022-02-14 10:03:45
在编译qt的ui文件时,会对应生成一个ui_****.h文件。我现在通过qtcreator手动修改ui_****.h文件内容,运行后生成的信息是根据ui_****.h生成的。我有些搞不清楚到底两个文件时怎么相互依赖的。又谁能给说下么?谢谢 

7 个解决方案

#1


http://hi.baidu.com/cyclone/blog/item/8f8f08fa52d22f8758ee9006.html

#2


QT编译时通过UIC编译UI文件,生成ui_****.h。可以算是ui文件决定ui_****.h

#3


引用 1 楼 dbzhang800 的回复:
http://hi.baidu.com/cyclone/blog/item/8f8f08fa52d22f8758ee9006.html

你好。但是现在我手动修改了ui_*.h文件,重新编译后,按理说ui_*.h应该按照ui文件内容生成,但是我查看ui_*.h后是我手动修改后的,这又是为什么?

#4


引用 3 楼 weiweiqiao 的回复:
引用 1 楼 dbzhang800 的回复:

http://hi.baidu.com/cyclone/blog/item/8f8f08fa52d22f8758ee9006.html

你好。但是现在我手动修改了ui_*.h文件,重新编译后,按理说ui_*.h应该按照ui文件内容生成,但是我查看ui_*.h后是我手动修改后的,这又是为什么?

没注意,搞错了。收回

#5


引用 4 楼 weiweiqiao 的回复:
引用 3 楼 weiweiqiao 的回复:

引用 1 楼 dbzhang800 的回复:

http://hi.baidu.com/cyclone/blog/item/8f8f08fa52d22f8758ee9006.html

你好。但是现在我手动修改了ui_*.h文件,重新编译后,按理说ui_*.h应该按照ui文件内容生成,但是我查看ui_*.h后是我手动修改后的,这又是为什……


因为make等工具都比较智能。它会自己判断哪些文件需要重新生成。比如 ui_xxx.h 依赖 xxx.ui,只要 xxx.ui 比 前者新,或者前者不存在,就会运行 uic xxx.ui -o ui_xxx.h,反之,如果前者比后者新,则不会重新运行

你手动修改了 前者(当然这么做时不对的),如果你不动后者,且不强制或手动uic,则uic不会被调用。

#6


第一、ui文件决定生成的.h头文件
第二、重新编译不一定重复第一这个过程,你make clean之后再编译就知道了

#7


引用 5 楼 dbzhang800 的回复:
引用 1 楼 dbzhang800 的回复:

http://hi.baidu.com/cyclone/blog/item/8f8f08fa52d22f8758ee9006.html

你好。但是现在我手动修改了ui_*.h文件,重新编译后,按理说ui_*.h应该按照ui文件内容生成,……

你好,我用的IDE是QtCreator,通过Designer在QListWidget控件上添加QListWidgetItem子控件,但是我发现子控件的对象名都是*1、*2什么的,无法自己设定,Disigner好像也没有修改的地方,你知道在哪里修改么?

#1


http://hi.baidu.com/cyclone/blog/item/8f8f08fa52d22f8758ee9006.html

#2


QT编译时通过UIC编译UI文件,生成ui_****.h。可以算是ui文件决定ui_****.h

#3


引用 1 楼 dbzhang800 的回复:
http://hi.baidu.com/cyclone/blog/item/8f8f08fa52d22f8758ee9006.html

你好。但是现在我手动修改了ui_*.h文件,重新编译后,按理说ui_*.h应该按照ui文件内容生成,但是我查看ui_*.h后是我手动修改后的,这又是为什么?

#4


引用 3 楼 weiweiqiao 的回复:
引用 1 楼 dbzhang800 的回复:

http://hi.baidu.com/cyclone/blog/item/8f8f08fa52d22f8758ee9006.html

你好。但是现在我手动修改了ui_*.h文件,重新编译后,按理说ui_*.h应该按照ui文件内容生成,但是我查看ui_*.h后是我手动修改后的,这又是为什么?

没注意,搞错了。收回

#5


引用 4 楼 weiweiqiao 的回复:
引用 3 楼 weiweiqiao 的回复:

引用 1 楼 dbzhang800 的回复:

http://hi.baidu.com/cyclone/blog/item/8f8f08fa52d22f8758ee9006.html

你好。但是现在我手动修改了ui_*.h文件,重新编译后,按理说ui_*.h应该按照ui文件内容生成,但是我查看ui_*.h后是我手动修改后的,这又是为什……


因为make等工具都比较智能。它会自己判断哪些文件需要重新生成。比如 ui_xxx.h 依赖 xxx.ui,只要 xxx.ui 比 前者新,或者前者不存在,就会运行 uic xxx.ui -o ui_xxx.h,反之,如果前者比后者新,则不会重新运行

你手动修改了 前者(当然这么做时不对的),如果你不动后者,且不强制或手动uic,则uic不会被调用。

#6


第一、ui文件决定生成的.h头文件
第二、重新编译不一定重复第一这个过程,你make clean之后再编译就知道了

#7


引用 5 楼 dbzhang800 的回复:
引用 1 楼 dbzhang800 的回复:

http://hi.baidu.com/cyclone/blog/item/8f8f08fa52d22f8758ee9006.html

你好。但是现在我手动修改了ui_*.h文件,重新编译后,按理说ui_*.h应该按照ui文件内容生成,……

你好,我用的IDE是QtCreator,通过Designer在QListWidget控件上添加QListWidgetItem子控件,但是我发现子控件的对象名都是*1、*2什么的,无法自己设定,Disigner好像也没有修改的地方,你知道在哪里修改么?