QT5开发||04、GUI应用程序基础(1)

前言

上一章通过一个“Hello World”实例,演示了在Qt Creator里创建应用程序、设计窗体界面、编译和运行程序的主要功能。本节将继续深入地介绍QtCreator设计GUI应用程序的基本方法。

1、Qt创建的应用程序项目的基本组织结构;
2、可视化设计的UI界面文件的原理和运行机制;
3、信号与槽的使用方法;
4、窗体可视化设计的底层原理;
5、应用程序的窗体、组件布局、菜单、工具栏、Actions等常见设计元素的使用方法。

UI文件设计与运行机制

1、项目组成文件

在Qt Creator中新建一个Widget Application项目sample,在选择窗口基类的页面选择QWidget作为窗体基类,并选中

“Generate form”复选框。创建后的项目文件目录树如下图所示。
在这里插入图片描述
这个项目包含以下一些文件。
(1)、项目组织文件sample.pro, 存储项目设置的文件。
(2)、主程序入口文件main.cpp,实现main()函数的程序文件。
(3)、窗体界面文件widget.ui,一个XML格式存储的窗体上的元件及其布局的文件。
(4)、widget.h 是所设计的窗体类的头文件,widget.cpp 是widget.h里定义类的实现文件在C++里,任何窗体或界面组件 都是用类封装的,一个类一般有一个头文件(.h 文件)和一个源程序文件(.cpp 文件)。

2、项目管理文件

后缀为“.pro” 的文件是项目的管理文件,文件名就是项目的名称,如本项目中的sample.pro。下面是sample.pro文件的内容。

QT += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui

项目管理文件用于记录项目的一些设置,以及项目包含文件的组织管理。

“Qt += core gui"表示项目中加入core gui模块。core gui是Qt用于GUI设计的类库模块,

如果创建的是控制台(Console)应用程序,就不需要添加coregui。Qt类库以模块的形式组织各种功能的类,根据项目涉

及的功能需求,在项目中添加适当的类库模块支持。例如,如果项目中使用到了涉及数据库操作的类就需要用到sql模

块,在pro文件中需要增加如下一行:

QT +=SQL

3、界面文件

后缀为“.ui"的文件是可视化设计的窗体的定义文件,如widget.ui。双击项目文件目录树中的文件widget.ui,会打开一个集

成在Qt Creator中的Qt Designer对窗体进行可视化设计,如下图所示。
在这里插入图片描述

上图中的UI设计器有以下一些功能区域。

(1)、组件面板。 窗口左侧是界面设计组件面板,分为多个组,如Layouts、Buttons、 Display Widgets等,界面设计的常见组件都可以在组件面板里找到。
(2)、中间主要区域是待设计的窗体。如果要将某个组件放置到窗体上时,从组件面板上拖放一个组件到窗体.上即可。例如,先放一个Label和一个Push Button到窗体上。
(3)、Signals和Slots 编辑器与Action编辑器是位于待设计窗体下方的两个编辑器。Signals和Slots编辑器用于可视化地进行信号与槽的关联,Action编辑器用于可视化设计Action。
(4)、布局和界面设计工具栏。窗口上方的一个工具栏,工具栏上的按钮主要实现布局和界面设计。
(5)、对象浏览器(Object Inspector)。 窗口右上方是Object Inspector, 用树状视图显示窗体上各组件之间的布局包含关系,视图有两列,显示每个组件的对象名称(ObjectName) 和类名称。
(6)、属性编辑器(PropertyEditor)。窗口右下方是属性编辑器,是界面设计时最常用到的编辑器。属性编辑器显示某个选中的组件或窗体的各种属性及其取值,可以在属性编辑器里修改这些属性的值。

设置组件属性

在上图显示的设计窗体上,放置–个Label和一个PushButton组件,它们的主要属性设置见下表。

ObjectName 类名称 属性设置 备注
LabDemo QLabel Text=“TextTabel” Font.PointSize=30 设置标签的显示文字和字体大小
BtnClose QPushButton Text=“Close” 设置按钮的文本

信号与槽

编辑完属性之后,再为btnClose按钮增加一个功能,就是单击此按钮时,关闭窗口,退出程序。使用Signals和Slots编

辑器完成这个功能,如图2-4所示。在信号与槽编辑器的工具栏上单击“Add”按钮,在出现的条目中, Sender选btnClose,

Signal选择clicked), Receiver 选择窗体Widget, Slot 选择close()。 这样设置表示当按钮btnClose被单击时,就执行

Widget的close()函数,实现关闭窗口的功能。然后对项目进行编译和运行,可以出现如图2-5所示的窗口,单击“Close”

按钮可以关闭程序。标签的文字内容和字体被修改了,窗口标题也显示为所设置的标题。

4、主函数文件

main.cpp是实现main()主函数的文件,下面是main.cpp文件的内容。

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    
    
    QApplication a(argc, argv);     //定义并创建应用程序
    MainWindow w;           //定义并创建窗口
    w.show();               //显示窗口    
    return a.exec();        //应用程序运行
}

main()函数是应用程序的入口。它的主要功能是创建应用程序,创建窗口,显示窗口,并运行应用程序,开始应用程序

的消息循环和事件处理。QApplication是Qt的标准应用程序类,第1行代码定义了一个QApplication类的实例a,就是应

用程序对象。然后定义了一个Widget类的变量w,Widget 是本实例设计的窗口的类名,定义此窗口后再用w.show显示

此窗口。.最后一行用a.exec()启动应用程序的执行,开始应用程序的消息循环和事件处理。

猜你喜欢

转载自blog.csdn.net/weixin_43335226/article/details/106961416
今日推荐