一、QT的基本概念

        QT主要用于图形化界面的开发, QT是基于C++编写的一套界面相关的类库,如进程线程库,网络编程的库,数据库操作的库,文件操作的库等。

        如何使用这个类库:类库实例化对象(构造函数) --> 学习类库中方法(函数)的使用 --> 后台逻辑的实现。

        QT是一个跨平台的GUI图形化界面开发工具。

QT的使用场合:

         汽车仪表盘 打印机 医疗器械 自动化的大型设备。

QT的优点:

         1.跨平台,具有软为完备的图形开发库,你所能想到的的图形的实现基本都有,比window的MFC的库更强大。

        2.接口的封装性好,易上手,学习QT框架对学习计算机图形框架有很重要的参考意义。

        3.QT内部基本上有一套自己的简易好用的内存回收机制,对提高C++水平有帮助。

        4.有很好的社区环境,市场份额在缓慢上升。

        5.轻量级的开发环境,可以做嵌入式开发。

二、QT工具介绍

        Assistant:QT类库的帮助手册的工具。

        Designer :用来设计图形化界面 对应的界面文件为***.ui (ui文件中的内容是一种标记性的语言) ​

        uic.exe:将***.ui文件转换为标准的C++的代码 ui_***.h

         moc.exe:元对象编辑器工具,将QT中非标准的信号和槽,转换为标准的C++的代码

        rcc.exe:资源管理器,将QT资源文件(图片,音频文件,视频文件),转换为标准的C++代码 ​         qmake:工程管理的工具 QT工程文件的后缀为***.pro工程文件, qmake工具可以根据***.pro文件,生成Makefile文件, 通过Makefile文件编译C++的代码。

        QTcreater:QT集成开发环境工具(IDE) 将上边的所有的工具都集成到一起了。

三、QT工程介绍 

3.1 工程管理文件

QT Creator工具介绍及使用-LMLPHP

#工程引导文件,工程管理文件
QT       += core gui
#需要加入的类库   core核心库  gui图形界面类库


greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#超过4版本后要自动加widgets类库,前面的版本中,widgets被合并在core类库中


CONFIG += c++11
#支持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


# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

3.2  头文件

 QT Creator工具介绍及使用-LMLPHP

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
//防止文件重复包含
#include<QPushButton>
#include <QMainWindow>
//引入头文件QMainWindow


QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }    //声明命名空间
QT_END_NAMESPACE


//自定义的界面类,公共继承自QMainWindow
class MainWindow : public QMainWindow
{
    Q_OBJECT           //处理信号与槽的元组件


public:
    MainWindow(QWidget *parent = nullptr);        //构造函数的声明
    ~MainWindow();                                //析构函数的声明


private:
    QPushButton *btn1;            //自定义的组件


    Ui::MainWindow *ui;   //使用ui界面类定义出来的指针,用于找到ui界面中拖拽出来的组件
};
#endif // MAINWINDOW_H

3.3 源文件

QT Creator工具介绍及使用-LMLPHP 

#include "mainwindow.h"             //包含自定义的头文件
#include "ui_mainwindow.h"          //包含ui界面生成的头文件


MainWindow::MainWindow(QWidget *parent)          //构造函数的定义
    : QMainWindow(parent)          //调用父类有参构造
    , ui(new Ui::MainWindow)       //给ui指针申请空间
{
    ui->setupUi(this);        //调用ui界面函数,给拖拽的组件申请空间并设置相关数据
}


//析构函数的定义
MainWindow::~MainWindow()
{
    delete ui;
}

3.4 主测试文件 

 QT Creator工具介绍及使用-LMLPHP

#include "mainwindow.h"      //包含自定义的头文件


#include <QApplication>      //包含应用程序的头文件
#include<iostream>
using namespace std;


//主函数
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);     //使用应用程序实例化对象,调用有参构造


    MainWindow w;         //使用自定义类实例化一个对象,调用无参构造
    w.show();              //调用show方法


    cout<<"hello world"<<endl;

    return a.exec();          //轮询等待 等待用户操作、等待事件处理、等待相关信号发射
}
08-31 17:20