Qt图形界面编程【1】(相关概念)

606 阅读4分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

1 相关概念

Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。

下载Qt网站:download.qt.io/archive/qt/

Qt的优点:

  1. 跨平台,几乎支持所有的平台
  2. 接口简单,容易上手,学习QT框架对学习其他框架有参考义。
  3. 一定程度上简化了内存回收机制
  4. 开发效率高,能够快速的构建应用程序。
  5. 有很好的社区氛围,市场份额在缓慢上升。
  6. 可以进行嵌入式开发。

2.2 将qt的编码格式改为UTF-8

在工具栏中点击“工具”,然后选择“选项”,然后再弹出的对话框中修改编码格式

https://note.youdao.com/yws/public/resource/d23ff061138554293b27d88e32be9553/xmlnote/114CFAC2464144F2AC9D12236A18F6F9/687044860CD7464FBC6C27D3A16347A0/85125

2.3 创建Qt图形界面的工程

第一步:选择新建项目,在弹出的对话框中选择第一个“app”,然后选择“Qt Qidget App”

https://note.youdao.com/yws/public/resource/d23ff061138554293b27d88e32be9553/xmlnote/114CFAC2464144F2AC9D12236A18F6F9/4BF454EEA759444E9AD05C42932543FA/85127

第三步:设置工程名和保存的路径

https://note.youdao.com/yws/public/resource/d23ff061138554293b27d88e32be9553/xmlnote/114CFAC2464144F2AC9D12236A18F6F9/9BA16ABF194A4F58AC4BB806D9F94025/85130

第四步:设置类名和基类

https://note.youdao.com/yws/public/resource/d23ff061138554293b27d88e32be9553/xmlnote/114CFAC2464144F2AC9D12236A18F6F9/1C1614C5DF6042F0A3983238BED8296F/85128

第五步:接着一路下一步即可

https://note.youdao.com/yws/public/resource/d23ff061138554293b27d88e32be9553/xmlnote/114CFAC2464144F2AC9D12236A18F6F9/9C16535CED574EFBA9E8CCC83BA31F68/85117

第六步:运行代码

https://note.youdao.com/yws/public/resource/d23ff061138554293b27d88e32be9553/xmlnote/114CFAC2464144F2AC9D12236A18F6F9/D168B9879FF24029A9DDF8F9C060FEBA/85121

2.4 基础文件介绍

2.4.1 .pro文件

.pro就是工程文件(project),它是qmake自动生成的用于生产makefile的配置文件

# 要使用模块,Qt采用模块化编程,所以需要什么模块就添加即可
QT       += core gui
# 4.x版本widgets属于gui 但是5.x版本分开了
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 \
    widget.cpp

# 头文件
HEADERS += \
    widget.h

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

图片.png

2.4.2 main.cpp文件

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    //应用程序类实例化对象
    //管理图形用户界面应用程序的控制流和主要设置。
    //是Qt的整个后台管理的命脉它包含主事件循环,在其中来自窗口系统和其它资源的所有事件处理和调度。
    //它也处理应用程序的初始化和结束,并且提供对话管理。
    //对于任何一个使用Qt的图形用户界面应用程序,
    //都正好存在一个QApplication 对象,而不论这个应用程序在同一时间内是不是有0、1、2或更多个窗口。
    QApplication a(argc, argv);
    //实例化一个窗口对象
    Widget w;
    //显示当前窗口
    w.show();

    //主事件循环,窗口不关闭,程序不结束,窗口关闭,程序结束
    return a.exec();
}

2.4.3 widget.h文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

//自己创建了一个类Widget,
//以公有继承的方式继承了QWidget类,
//Qwidget类就是一个普通窗口类
class Widget : public QWidget
{
    //支持信号和槽
    Q_OBJECT

public:
    //有参构造函数,设置了默认参数
    Widget(QWidget *parent = nullptr);
    //析构函数
    ~Widget();
};
#endif // WIDGET_H

2.4.4 widget.cpp文件

#include "widget.h"

//有参构造函数类外实现
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
}

//析构函数
Widget::~Widget()
{
}

2.5 设置窗口属性

2.5.1 Qt助手

  1. 打开方式1:直接点击Qt Creator中的状态栏中的“帮助”
  2. 打开方式2(==推荐==):在windows中找到Assistant
https://note.youdao.com/yws/public/resource/d23ff061138554293b27d88e32be9553/xmlnote/114CFAC2464144F2AC9D12236A18F6F9/06EF7818F3C34613A37C14CCA179E1A7/85120

2.5.2 学习使用Qt助手

要查找一些信息,一般从类出发,索引查询QWidget, 查询之后会先显示一个目录:

图片.png

再往下是这个类的基本信息介绍

图片.png

查询某一个要使用的函数的时候,先从当前类的公有成员函数去找,如果找不到,从公有的槽函数中找,如果还找不到,一般就要去这个类的父类中去找

2.5.3 设置窗口属性

#include "widget.h"
#include <QString>
#include <QDebug>

//有参构造函数类外实现
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //我们所有关于窗口的代码都要在这个有参构造函数里面去书写

    //*****************设置窗口属性*********************
    //设置窗口标题
    this->setWindowTitle("这是第一个界面");

    //获取窗口标题
    //Qt中支持STL,但是需要在前面加一个Q,并且第一个字符大写
    //例如:QString QVector QList QStack
    QString s = this->windowTitle();
    //输出标题
    qDebug()<< s;

    //设置窗口尺寸
    //this->resize(800, 600);
    //设置窗口的固定大小
    this->setFixedSize(800, 600);
}

//析构函数
Widget::~Widget()
{
}