QT 如何通过.h文件更新.ui文件

时间:2021-08-31 10:01:17
        初学QT,要在vs中用qt写界面,然而发现一个问题。
        就是直接在.ui文件中,用拖控件的方式直接构造界面,在运行的时候,界面的相关布局代码所在的.h文件就会自动更新,可如果我是通过代码,在.h中构造控件,写它的位置,功能啊什么的,ui文件是不会更新的,这样的话 代码和.ui就不同步了,有的时候,在运行的时候,未被修改的ui文件还会把我写的代码冲掉,恢复成ui设置的那个样子。
        也就是说,.ui改了后,.h会自动更新同步,然而反过来,.ui 缺没动静。
        请问,有什么方法能让.ui和.h相互同步呢?

11 个解决方案

#1


.h文件是根据UI文件生成的,无法通过.h文件更改去改UI文件的。

#2


本来就这么设计的啊,修改ui的槽话,.h和.cpp会自动更新相应的函数.你在.h和.cpp中自己定义的其他的函数和变量是不会修改的,要是更改.h,ui怎么知道你是什么意思,给你改成什么样子.

#3


引用 2 楼 only_1 的回复:
本来就这么设计的啊,修改ui的槽话,.h和.cpp会自动更新相应的函数.你在.h和.cpp中自己定义的其他的函数和变量是不会修改的,要是更改.h,ui怎么知道你是什么意思,给你改成什么样子.
请问 是不是大家都不会自动通过写代码来搞控件呢?

#4


引用 1 楼 Marcelxx 的回复:
.h文件是根据UI文件生成的,无法通过.h文件更改去改UI文件的。
 请问 那平时代码只是负责写槽函数吗?

#5


引用 3 楼 LBlackCat 的回复:
Quote: 引用 2 楼 only_1 的回复:

本来就这么设计的啊,修改ui的槽话,.h和.cpp会自动更新相应的函数.你在.h和.cpp中自己定义的其他的函数和变量是不会修改的,要是更改.h,ui怎么知道你是什么意思,给你改成什么样子.
请问 是不是大家都不会自动通过写代码来搞控件呢?
自动什么意思?你说开发环境,还是说人工写代码.qt的控件操纵代码能力低于vs和c++builder,所以大部分控件的特殊操作还是要手动写 的

#6


我觉得ui designer只是为了方便编程使用,将要写的代码通过拖拉控件来放置,如果有能力用代码实现还是用代码实现更好。

#7


引用 4 楼 LBlackCat 的回复:
Quote: 引用 1 楼 Marcelxx 的回复:

.h文件是根据UI文件生成的,无法通过.h文件更改去改UI文件的。
 请问 那平时代码只是负责写槽函数吗?

ui_名字.h这个.h文件是根据UI文件生成的,你在你窗口的类中做具体的调整那些,比如信号槽之类的,微调控件的大小等之类的。

#8


引用 5 楼 only_1 的回复:
Quote: 引用 3 楼 LBlackCat 的回复:

Quote: 引用 2 楼 only_1 的回复:

本来就这么设计的啊,修改ui的槽话,.h和.cpp会自动更新相应的函数.你在.h和.cpp中自己定义的其他的函数和变量是不会修改的,要是更改.h,ui怎么知道你是什么意思,给你改成什么样子.
请问 是不是大家都不会自动通过写代码来搞控件呢?
自动什么意思?你说开发环境,还是说人工写代码.qt的控件操纵代码能力低于vs和c++builder,所以大部分控件的特殊操作还是要手动写 的
您的意思是 平时的控件放置可以拖控件,而槽函数之类的“特殊操作”用手写呢? 其实我就是想问一下,大家平时是怎么做的。

#9


引用 7 楼 Marcelxx 的回复:
Quote: 引用 4 楼 LBlackCat 的回复:

Quote: 引用 1 楼 Marcelxx 的回复:

.h文件是根据UI文件生成的,无法通过.h文件更改去改UI文件的。
 请问 那平时代码只是负责写槽函数吗?

ui_名字.h这个.h文件是根据UI文件生成的,你在你窗口的类中做具体的调整那些,比如信号槽之类的,微调控件的大小等之类的。
诶. 信号槽的具体代码还是要手写,然而微调控件还是不能在 用ui生成之后,用代码再改吧?

#10


你的代码不能写在ui_名字.h文件里,应该写在该窗体对应的.cpp里面就不会冲掉了!

#11


楼主,你完全可以不用.ui方式去构造你的界面和完全控制你的界面,建议去看看Qt自带的例子mainwindow.它里边虽然有.ui,但是内部的很多控件都是自己创建和布局的这个不冲突

#1


.h文件是根据UI文件生成的,无法通过.h文件更改去改UI文件的。

#2


本来就这么设计的啊,修改ui的槽话,.h和.cpp会自动更新相应的函数.你在.h和.cpp中自己定义的其他的函数和变量是不会修改的,要是更改.h,ui怎么知道你是什么意思,给你改成什么样子.

#3


引用 2 楼 only_1 的回复:
本来就这么设计的啊,修改ui的槽话,.h和.cpp会自动更新相应的函数.你在.h和.cpp中自己定义的其他的函数和变量是不会修改的,要是更改.h,ui怎么知道你是什么意思,给你改成什么样子.
请问 是不是大家都不会自动通过写代码来搞控件呢?

#4


引用 1 楼 Marcelxx 的回复:
.h文件是根据UI文件生成的,无法通过.h文件更改去改UI文件的。
 请问 那平时代码只是负责写槽函数吗?

#5


引用 3 楼 LBlackCat 的回复:
Quote: 引用 2 楼 only_1 的回复:

本来就这么设计的啊,修改ui的槽话,.h和.cpp会自动更新相应的函数.你在.h和.cpp中自己定义的其他的函数和变量是不会修改的,要是更改.h,ui怎么知道你是什么意思,给你改成什么样子.
请问 是不是大家都不会自动通过写代码来搞控件呢?
自动什么意思?你说开发环境,还是说人工写代码.qt的控件操纵代码能力低于vs和c++builder,所以大部分控件的特殊操作还是要手动写 的

#6


我觉得ui designer只是为了方便编程使用,将要写的代码通过拖拉控件来放置,如果有能力用代码实现还是用代码实现更好。

#7


引用 4 楼 LBlackCat 的回复:
Quote: 引用 1 楼 Marcelxx 的回复:

.h文件是根据UI文件生成的,无法通过.h文件更改去改UI文件的。
 请问 那平时代码只是负责写槽函数吗?

ui_名字.h这个.h文件是根据UI文件生成的,你在你窗口的类中做具体的调整那些,比如信号槽之类的,微调控件的大小等之类的。

#8


引用 5 楼 only_1 的回复:
Quote: 引用 3 楼 LBlackCat 的回复:

Quote: 引用 2 楼 only_1 的回复:

本来就这么设计的啊,修改ui的槽话,.h和.cpp会自动更新相应的函数.你在.h和.cpp中自己定义的其他的函数和变量是不会修改的,要是更改.h,ui怎么知道你是什么意思,给你改成什么样子.
请问 是不是大家都不会自动通过写代码来搞控件呢?
自动什么意思?你说开发环境,还是说人工写代码.qt的控件操纵代码能力低于vs和c++builder,所以大部分控件的特殊操作还是要手动写 的
您的意思是 平时的控件放置可以拖控件,而槽函数之类的“特殊操作”用手写呢? 其实我就是想问一下,大家平时是怎么做的。

#9


引用 7 楼 Marcelxx 的回复:
Quote: 引用 4 楼 LBlackCat 的回复:

Quote: 引用 1 楼 Marcelxx 的回复:

.h文件是根据UI文件生成的,无法通过.h文件更改去改UI文件的。
 请问 那平时代码只是负责写槽函数吗?

ui_名字.h这个.h文件是根据UI文件生成的,你在你窗口的类中做具体的调整那些,比如信号槽之类的,微调控件的大小等之类的。
诶. 信号槽的具体代码还是要手写,然而微调控件还是不能在 用ui生成之后,用代码再改吧?

#10


你的代码不能写在ui_名字.h文件里,应该写在该窗体对应的.cpp里面就不会冲掉了!

#11


楼主,你完全可以不用.ui方式去构造你的界面和完全控制你的界面,建议去看看Qt自带的例子mainwindow.它里边虽然有.ui,但是内部的很多控件都是自己创建和布局的这个不冲突