Qt的基础及基本代码说明

写这篇文章,也是正赶着自己学C++,之前确实用Qt已经做过了好些工程项目,应该说对啊Qt的运行机制等都有一定的熟悉和了解,但是毕竟没有系统学过C++,直接上手的Qt,基础性的东西好多都是知道怎么用,而不知道意思。趁这次C++学习,就稍微梳理一下,顺便出一个Qt创建工程的步骤说明。

本人使用的使用的是Qt5.9,我自己之前用过10,12,不过最终还是换到了9,应该说9相对稳定,主要我确实更习惯Qt5.9。

项目创建

那废话不多说了,进入到下面的工程建立说明:
(1)进入Qt Creater 界面,点击文件,点击新建进入该界面:
在这里插入图片描述
选择 Application 的 Qt Widgets Application,进入到下一界面,这里就一目了三,重命名、改保存路径,再下一步。

针对上图,这里多说明几点:

(1)Qt Widgets Application 表示支持桌面平台的有图形用户界面(GUI)界面应用程序。GUI的设计完全基于C++语言,采用Qt 提供的一套C++类库。(一般的界面开发)
(2)Qt Console Application 表示控制台应用程序,无GUI界面,一般用于C/C++语言学习,只需要简单的输入输出操作就能构建此类项目。
(3)Qt Quick Application 表示创建可部署Qt Quick 2 的应用程序。(我也不熟悉,只知道这个很强大)

其他的几个,我这里就不做过多说明了,确实自己也没去深究,也不懂 ,哈哈哈哈哈。
在这里插入图片描述
然后进入下一界面,选择 MinGW 32bit,点击下一步。
在这里插入图片描述
在到这里,选择基类,我这里有要多啰嗦几句了:
(1)QMainWindow 是主窗口类,主窗口具有主菜单栏、工具栏、状态栏,类似于一般的应用程序主窗口(就行Qt Creater的主窗口上的有编辑栏那种)
(2)QWidget 是所有具有可视化界面类的基类,选择QWidget 创建的界面对各种界面组件度都可以支持(反正我最喜欢用这个,一片空白随便搞)
(3)QDialog 是对话框类,可建立一个基于对话框的界面。
第一次搞的,我觉得选QWidget类合适.
在这里插入图片描述

然后就是下一步,再点完成即可:
在这里插入图片描述
完成后导航栏会这样的结构的文件出现。
依次说明一下:
(1)untitled.pro项目管理文件,包括一些对项目的设置项,特别是后续开发中,需要设计添加模块的问题,就在 pro 文件中添加需要的模块;同时你打开Qt项目时也是选择这个。
(2)Header文件保存所有窗口类头文件的文件分组,widge.h
(3)Source 文件保存C++ 源码的文件分组。main.cpp是主函数文件,也是应用程序执行的入口
(4)Froms 文件分组是保存项目的所有界面文件(.ui),双击.ui文件可以进入界面编辑界面。

基础源码说明

.pro 文件

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = untitled
TEMPLATE = app

(1)QT += core gui 表示为项目添加 core gui 模块,core gui模块 是Qt用于GUI设计的类库模块。
比如需要加入包含数据库的模块,则是再其后面加入:QT += sql
(2)greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 这是一条执行语句,表示当 Qt 主版本大于4时,待加入widget模块
(3) TARGET = untitled 表示生成的目标可执行文件的名称,即编译后生成的可执行文件是untitled.exe
(4)TEMPLATE = app 表示项目使用的模板是app,即一般应用程序

main.cpp 主程序

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

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

    return a.exec();           //应用程序运行
}

main函数是找整个应用程序的入口
QApplication 是Qt 的标准应用程序类

widget .h 文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui { //一个名称空间Ui,包含一个类widget
class Widget;  //需要说明一下这类并不是下面的类,而是cpp文件中申明的ui_widegt.h中定义的类
}

class Widget : public QWidget  //widget类的定义,所谓的继承与QWidget的类Widget的定义
{
    Q_OBJECT   //使用了Q_OBJECT这个宏,这是使用Qt的信号与槽(signal与slot)机制的类都必须加入的宏

public:
    explicit Widget(QWidget *parent = nullptr);//widget的构造函数
    ~Widget();//析构函数

private:
    Ui::Widget *ui;//指针,是为了使用前面声明的namespace Ui里面的Widget类定义
};

#endif // WIDGET_H

(1)Q_OBJECT :使用了Q_OBJECT这个宏,这是使用Qt的信号与槽(signal与slot)机制的类都必须加入的宏
(2) Ui::Widget *ui 指针,是为了使用前面声明的namespace Ui里面的Widget类定义,这个很重要,在cpp中调用ui文件中的控件时,都是以ui开头指向你需要调用的控件
(3)class Widget : public QWidget 这就说明,Widget类是QWidget类的一个派生类

widget.cpp 文件

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

(1)#include "ui_widget.h" 这个就是Qt编译生成的与UI文件 widget.ui 对应的类定义文件
(2) Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) 构造函数头部,
意义:执行父类QWidget 的构造函数,创建一个Ui::Widget 类的对象 ui 。这个ui 就是Widget 的private 中定义的指针变量 ui。(采用C++中的成员初始化列表语句)
(3)ui->setupUi(this) 执行Ui::Widget 类的setupUi函数,这个函数实现窗口的生成与各种属性的设置、信号与槽的关联,this指针指向定义的widget类
(4)析构函数就是删除用 new 创建的ui指针

注意:(我自己学C++不精,所以以作提醒)
冒号后面跟的是赋值,这种写法是C++的特性。

A( int aa, int bb ):a(aa),b(bb)
{
}

相当于

A( int aa, int bb )
{
a=aa;
b=bb;
}

后续开始 Qt 的系统学习,整合深化自己本科阶段所掌握的Qt知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LionelMartin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值