Qt入门学习——Qt Creator 中 ui 文件和 Qt 代码关系
来源:互联网 发布:linq去除重复数据 编辑:程序博客网 时间:2024/05/18 21:43
通过《Qt Creator的使用》的学习,我们可以借助 Designer(界面设计器)快速设计界面。
此例子 ui 内容如下(只是简单添加了一个按钮):
工程的代码目录结构如下:
最终在工程所在目录会生成一个 ui 文件:
此 ui 文件实际上是xml 文件:
当我们编译 Qt 程序代码,Qt Creator 用 uic 工具把 ui 文件的内容转换成 C++ 代码,在工程目录同一级目录的 build- 目录下自动生成 ui_类名.h 文件,如本例子中的 ui_mywidget.h,是由 mywidget.ui 利用uic 工具转换而成,只要通过Designer 修改了图形界面里的内容,ui_mywidget.h 也会跟着自动同步更新内容,ui_mywidget.h 是自动生成,用户写代码时可以不用关心其实现过程:
接下来我们一起分析一下此 ui_mywidget.h 和 Qt 程序代码如何关联起来(即 ui 文件和 Qt 代码关系)。
mywidget.h 中自动多了一个命名空间的声明,类中多了 ui 指针对象成员:
mywidget.h 对应的 mywidget.cpp 实现过程如下:
接下来,我们一起看看 ui_mywidget.h 的实现过程:
通过这样的一步步分析,我们发现 Designer(界面设计器)设计 ui 界面最终转换为 C++ 代码(ui_类名.h),和我们写的 Qt 代码是大同小异的,也就是说代码才是王道,Designer(界面设计器)只是辅助我们快速设计界面,没有它,我们同样可以写 Qt 程序。假如我们对某些部件操作不熟悉,不知道该如何用其相应函数,这时候我们通过 Designer(界面设计器)拖拽此部件,修改其所需属性,接着编译,看其自动转换的 C++ 代码如何实现,这样既可学习其相应函数的用法,所以说,Designer(界面设计器)本身就是学习 Qt 的好老师。
那我们如何通过代码修改 ui 文件部件的属性呢?
在设计模式下,每个部件在“QObject”中都有一个“objectName”(对象名字)的属性:
“objectName”(对象名字)的属性的值(如此例子中的值“pushButton”),此值则为“ui_类名.h”中自动创建的对象指针名:
所以,我们在 .cpp 文件某函数中,可以通过“ ui-> ”引用此成员,在 Qt Creator 中,“.(点)”键比较智能,如果操作的是普通对象,则为“.(点)”,如果是对象指向,自动变为“->”,而且提示可以引用的成员:
这里,通过代码修改 pushButton 的内容:
编译运行程序后,按钮的内容确实被修改:
本教程示例代码下载请点此链接:http://download.csdn.net/detail/tennysonsky
- Qt入门学习——Qt Creator 中 ui 文件和 Qt 代码关系
- Qt入门学习——Qt Creator 中 ui 文件和 Qt 代码关系
- Qt入门学习——Qt Creator的使用
- Qt入门学习——Qt Creator的使用
- Qt和Qt creator、Kdevelop的关系
- Qt和Qt creator、Kdevelop的关系
- Qt Creator中加入新的ui文件时报错
- QT入门 & QT Creator 使用
- QT入门 & QT Creator 使用
- QT入门 & QT Creator 使用
- QT Creator入门——笔记1
- QT—Creator使用
- creator/QT入门 & QT Creator 使用
- qt学习之qt creator
- QT creator 简单入门
- QT Creator快速入门--学习笔记一
- Qt,Qt Creator,minGW,VS关系
- Qt,Qt Creator,minGW,VS关系
- Spring Boot干货系列
- Go实战--golang中使用WebSocket实时聊天室(gorilla/websocket、nkovacs/go-socket.io)
- List<Map<String,Object>> 不写limit在 Controller里面分页
- Oracle两张数据表之间某个指定字段的单向和双向同步
- RxJava简介与入门(一)
- Qt入门学习——Qt Creator 中 ui 文件和 Qt 代码关系
- 序?【算是序吧,怎么感觉跟写小说一样】
- 设计模式_13:适配器模式
- Java中Properties类的操作
- [USACO2011 DEC]牧草种植Grass Planting
- 数据表的创建与管理
- Linux第一章、第二章课后简答题
- validate验证+ajax
- Maven之自定义archetype生成项目骨架