关于Qt中的ui_mainwindow.h文件,为什么在h文件中有“实现”,不应该只是声明吗?

山水蒙蒙 2019-06-05 10:06:32
如题所述,我记得C++编程中一般h文件写声明,cpp文件写实现。用Qt Creater生成一个什么也没有写的程序,打开看了一下提到的这个头文件,发现里面尽然有实现。
...全文
4432 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈博啟 2021-05-19
  • 打赏
  • 举报
回复
include指令实质上就是复制粘贴,所以你在头文件里调用函数也是可以的
Robins4321 2021-05-15
  • 打赏
  • 举报
回复
服了,.h文件有实现咋了
瘦子爱编程 2022-05-19
  • 举报
回复
@Robins4321 哈哈
  • 打赏
  • 举报
回复 1
你在Qt下,创建一个项目的时候,根据你的选择,会有三个文件,ui,cpp,h cpp和h都是C++语言的程序,正常运行没问题,但是这个ui不行,所以qt给她编译后生成一个文件,及时ui_xxx.h文件,只有这个h文件没有cpp。如果你想自己写她的编译后的代码,你可以写一个ui_xxx.cpp 。只不过多此一举,在h中也可实现的,不冲突。
yjwx0017 2021-02-03
  • 打赏
  • 举报
回复 3
C++基础不过关,这叫内联函数
  • 打赏
  • 举报
回复
楼上正解。里面定义的都默认内联。
qiushot 2020-04-16
  • 打赏
  • 举报
回复
.h里实现的叫类的inline函数
望月喵 2020-04-14
  • 打赏
  • 举报
回复
事实上,声明一个类即可以只有头文件又可以只有cpp文件。这里采用头文件一是为了减少自带的文件数,使项目更简洁,因为这个类只有一个函数实现没有必要再加一个文件去实现这唯一一个函数,从而使项目变得更简洁。二是为了规范,我们一般都说引用头文件,很少说去引用cpp文件,因此,这里采用头文件包含实现是比较合理的。
可爱的芒果酱 2020-03-09
  • 打赏
  • 举报
回复
h文件写类的实现并不报错,所以没毛病
nry19871012 2020-03-09
  • 打赏
  • 举报
回复
刚开始学QT的时候发有这个ui_mainwindow.h文件,感觉就像是发现了新大陆,把不会的控件放UI上各种调整设置,然后来看代码是怎么使用这些属性与函数的。
山水蒙蒙 2020-03-08
  • 打赏
  • 举报
回复
引用 18 楼 donwmufromdying 的回复:
c++头文件中有实现实在是太正常了。inline了解一下。上边已经有人说了ui_xxx.h的产生原理。再多说一点的话,其实这是一个经典的设计模式。你可以去看看装饰者模式。第二,曾经的模板类实现还有要求成员函数都得是inline的,你要是放在cpp里还会编译报错,当然现在不用了。inline的优点是程序性能好,缺点是编译出来的目标码有点大
感谢大神指点,我好好琢磨琢磨您的话~~
蔚蓝闲闲 2020-03-06
  • 打赏
  • 举报
回复
啊,这个帖子氛围真好,也解决了我的疑问,感谢!
donwmufromdying 2020-03-06
  • 打赏
  • 举报
回复
c++头文件中有实现实在是太正常了。inline了解一下。上边已经有人说了ui_xxx.h的产生原理。再多说一点的话,其实这是一个经典的设计模式。你可以去看看装饰者模式。第二,曾经的模板类实现还有要求成员函数都得是inline的,你要是放在cpp里还会编译报错,当然现在不用了。inline的优点是程序性能好,缺点是编译出来的目标码有点大
秘境之眼 2019-06-10
  • 打赏
  • 举报
回复
可以有实现的,也可以只声明,两种都可以
fly4free 2019-06-10
  • 打赏
  • 举报
回复
肯定有实现啊,不然控件位置,控件关系,控件ID 。。。什么的,怎么弄出来的
donwmufromdying 2019-06-10
  • 打赏
  • 举报
回复
1.ui_xxx.h是qmake根据xxx.ui文件自动生成的一个头文件 2.Qt这种设计模式是一个经典的设计模式,你可以认为是一种build模式加decorator模式。 Qt源码简直就是一个C++的宝库。你要是经常去读可以有很多可借鉴的地方。如果想做复杂一点的desktop app建议可以读一下QtCreator源码
走好每一步 2019-06-06
  • 打赏
  • 举报
回复
QT源码里有很多值得学习的,有很多软件工程方便的知识和道理。 比mfc的设计强不知道多少
走好每一步 2019-06-06
  • 打赏
  • 举报
回复
引用 7 楼 您对于我——亦师亦友 的回复:
[quote=引用 2 楼 hzh_Beyond 的回复:] 这个文件是编译器针对UI生成的中间文件,ui文件xml格式的,Qt编译时,先用uic工具将mainwindow.ui编译生成ui_mainwindow.h,转化为c++类,就是 Ui::MainWindow,然后在MainWindow.cpp中有一个UI成员变量被初始化为Ui::MainWindow,达到可以在程序中访问界面的目的。
您说的很对,感谢耐心回答,然而我其实想知道的是作为一个h文件,其中为什么有了函数的实现,不是应该只声明,然后在cpp中实现吗?我想是不是因为这个Ui_MainWindow类较简单单一,所以Qt就这样干了?我不是挑Qt的毛病,Qt在我心中是很伟大的。[/quote] 同学,你多学几门语言就不会有这种疑问了,Java就一个文件。 还有分头文件和cpp的好处,你需要去了解一下程序编译的过程。 头文件的include都很讲究的,在大工程,海量代码下。 你想象不到office源码全编译一次需要几天吧?
山水蒙蒙 2019-06-06
  • 打赏
  • 举报
回复
引用 2 楼 hzh_Beyond 的回复:
这个文件是编译器针对UI生成的中间文件,ui文件xml格式的,Qt编译时,先用uic工具将mainwindow.ui编译生成ui_mainwindow.h,转化为c++类,就是 Ui::MainWindow,然后在MainWindow.cpp中有一个UI成员变量被初始化为Ui::MainWindow,达到可以在程序中访问界面的目的。
您说的很对,感谢耐心回答,然而我其实想知道的是作为一个h文件,其中为什么有了函数的实现,不是应该只声明,然后在cpp中实现吗?我想是不是因为这个Ui_MainWindow类较简单单一,所以Qt就这样干了?我不是挑Qt的毛病,Qt在我心中是很伟大的。
山水蒙蒙 2019-06-06
  • 打赏
  • 举报
回复
引用 4 楼 走好每一步 的回复:
为什么在h文件中有“实现”,语言东西,别太较真
只有您是审题最精准的,最近遇到好多回答题的单独看都说的很对,但和问题根本不匹配。但仍然感谢大家的热心。
山水蒙蒙 2019-06-06
  • 打赏
  • 举报
回复
引用 3 楼 走好每一步 的回复:
这个cpp不需要你去改
我不是要改这个东西,我只是想问一下。难道我说一个女的真漂亮就要娶她做老婆吗?哈哈。
加载更多回复(8)

16,794

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧