当前位置:   article > 正文

QT系列--环境搭建_qt环境搭建

qt环境搭建

本文为对QT的项目结构进行简要的介绍。


一、文件路径

创建项目途中,代码的路径如果是中文会有报错,如何创建参考上一篇文章
在这里插入图片描述

重新创建一个路径不带中文名称的路径,然后就可以正常运行项目了

二、代码解读

1.main.cpp

#include "widget.h"main.cpp

#include <QApplication>

int main(int argc, char *argv[]) #命令行参数,命令行参数内容
{
    QApplication a(argc, argv); #创建对象,传递参数,图形化界面必须要有
    Widget w; # widget就是创建项目填写的生成类名
    w.show();# 让空间对象显示 。hide隐藏
    # widget的父类Qwidget提供的
    return a.exec();
    # 
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

linux中的exec,进程程序替换,把可执行文件中的代码和数据替换到当前进程中,
QT的exec和linux的没有任何关系,只是名字恰好是一样的,一个术语在不同的场合表示的含义不一样,结合上下文进行理解

2.widget.h

文件中的widget的声明

#ifndef WIDGET_H
#define WIDGET_H #保证头文件包含一次  更推荐 # pragma once

#include <QWidget># QT的设定,使用QT内置的类,包含头文件名字和类名一致

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget   # 继承QWidget,也就是创建项目时选择的父类,内置,需要包含头文件
{
    Q_OBJECT   # QT内置的宏,本质上是文本替换,会生成一大堆代码,信号槽机制需要引用

public:
    Widget(QWidget *parent = nullptr); #构造函数
    ~Widget(); # 析构函数
//parent引入对象树机制,创建的Qt对象,就可以把这个对象挂到对象树上,往树上挂的过程中要指定父节点(N叉树)
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

也不是用到的所有类都要显式包含头文件,也可能是间接包含的,比如引用a.h,其中又包含了b.h,因此如果需要一个QT类先用,看是否已经被隐式包含了

3.Widget.cpp

#include "widget.h"              # 头文件
#include "ui_widget.h"           #form file被 qmake生成的头文件

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)  //
{
    ui->setupUi(this);#以上两个为把form file生成的界面和当前的widget关联起来
}

Widget::~Widget()
{
    delete ui;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

关键点:form file
双击UI文件,会自动调用UIdesinger,会有图形化界面的编辑器
在这里插入图片描述

这就是我们生成的程序窗口,
左侧:QT中内置的控件,拖拽左侧的控件到程序窗口就可以创建具体的界面了,
右侧:右面编辑属性,每个控件有很多属性,就影响到控件的具体行为

再点击左侧编辑会显示本来的代码文件,为xml格式,和html十分类似,都使用成对的标签来表示数据,还有一些单标签。

标签的含义是程序员自定义的,本文件中的是QT开发的,不用关注具体的含义,而html是固定的,有标准委员会。

QT中使用xml文件是为了描述程序的界面什么样子的,qmake会调用相关的工具依据xml文件生成C++代码,从而把完整的界面构建出来。

4.empty.pro

QT项目的工程文件,也是qmake构建的重要依据

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 \
    widget.cpp

HEADERS += \
    widget.h

FORMS += \
    widget.ui
# 描述当前项目中,参与构建的文件都有什么(编译器要编译哪些文件)
   不需要手动修改,QT。creater会自动维护,
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

相当于linux中的 Make file(很古老的技术),qmake+ .pro
和Makefile是类似的,creater已经把细节封装好了,可以直接编译运行

三、编译后文件

以上都是源文件,这时候我们看一下构建过程中生成的中间文件,位于和本文件夹并列的目录。在这里插入图片描述
1.这个makefile不需要手动写,自动生成
2.ui.widget.h自动生成,根据xml内容构建的界面内容。

生成的文件中Ui_Widget,在我们的widget.h的类的声明中有提到,该文件中的代码会在SetupUi这个方法中生成出界面的具体细节
在这里插入图片描述

debug中的EXe就是最终生成的可执行文件,和再creater中是一个效果。

总结

了解QT项目的组成部分

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/762407
推荐阅读
相关标签
  

闽ICP备14008679号