QT入门学习之UI文件设计与运行机制

在Qt Creatrer中新建一个Qt Widget Application项目demo1,其基类选择QWidget作为窗体基类,并选择“Generrate form”复选框,让其自动生成.UI文件。

1. 项目文件组成

1). 项目组织文件demo1.pro,存储项目设置的文件
2). 主程序入口文件main.cpp,实现main()函数的程序文件
3). 窗体界面文件widget.ui文件,一个XML格式存储的窗体上的元件及其布局文件
4). widget.h是所设计的窗体类的头文件,widget.cpp是widget.h里定义类的实现文件。

2. 各类文件详细内容

1)项目管理文件demo1.pro文件
Qt +=core gui
greaterThan(Qt_MAJOR_VERSION,4): Qt+=widgets
TARGET=demo1
TEMPLATE=app
SOURCES+=main.cpp \ widget.cpp
HEADERS +=widget.h
FORMS +=widget.ui

**“Qt +=core gui”**表示项目中添加了core gui模块(GUI设计类库模块)。
Qt类库是以模块的形式组织各种功能的类,根据项目涉及到的功能需求,在项目中加载不同的类库模块(如:使用数据库就需要加Qt+=sql)。
greaterThan(Qt_MAJOR_VERSION,4): Qt+=widgets---->>这是一个条件执行语句,表示QT版本大于4才能加入widgets模块。
**TARGET=demo1:**表示生成的可执行文件的名称为demo1。
**TEMPLATE=app:**表示项目使用的模板是APP,是一般的应用程序
SOURCES+=main.cpp \ widget.cpp
HEADERS +=widget.h
FORMS +=widget.ui
这些文件的由Qt Creater软件自动管理(添加或者删除)的源程序文件,头文件,.ui文件。

2).ui文件
一个XML格式存储的窗体上的元件及其布局文件。
![在这里插入图片描述](https://img-在这里插入图片描述
双击.ui文件可以打开一个集成在Qt Creater中的Qt Designer对窗体进行可视化设计。
在这里插入图片描述
3)主函数文件main.cpp
在这里插入图片描述
main()函数是应用程序的入口程序。他的主要作用是创建应用程序(QApplication a(argc,argv)),创建窗口(Widget w)、显示窗口并运行程序(w.show()),开始应用程序的消息循环和事件处理(a.exec)。

4)窗体相关文件(widget.h、widget.cpp、widget.ui、ui_widget.h)
widget.h:定义窗体类的头文件,定义了类Widget:
#ifndef WIDGET_H
#define WIDGET_H
#include
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
namespace Ui这是声明一个名称为Uid的命名空间,包含一个类Widget,但是这个类并不是文件中定义的Widget,而是ui_Widget.h文件中定义的类,用于描述界面的组件的,这个声明相当于外部类型声明。
Widget类定义,继承与QWidget基类,是本实验的窗体类。
Ui::Widget *ui是命名空间中Widget类定义的指针,该指针指向可视化设计界面,可以使用这个指针访问界面上的组件。

widget.cpp:Widget类的功能实现源代码:
#include “widget.h”
#include “ui_widget.h”
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
#include "ui_widget.h"是Qt编译生成的UI文件demo1.ui对应的类定义文件。
Widget::Widget(QWidget *parent) :QWidget(parent), ui(new Ui::Widget):执行父类QWidget的构造函数,创建一个Ui::Widget类的对象ui。设个ui就是Widget的私有部分定义的指针ui。
ui->setupUi(this):调用Ui::Widget类的setupUi()实现窗口的生成和各种属性的设置,信号和槽的关联等等。

widget.ui窗体界面文件,存储窗体上的各个组件的属性设置和布局;
ui_widget.h:编译后窗体上的组件及其属性、信号和槽的关联等自动组成的一个类的定义文件,类的名称Ui_Widget。
补充:在这些文件中涉及到了C++中的命名空间和类以及类的创建,现在来对这些知识做一个说明:
命名空间就像房子、柜子、抽屉,是放类、常量、静态变量以及下一级命令空间的容器
就像冰箱、衣服、圆珠笔,是有结构、定义了行为的一种数据结构,它们的运行时实例叫做对象

猜你喜欢

转载自blog.csdn.net/cainiaoxiakexing/article/details/88633990