Qt — QtCreator 创建项目

  1. 打开 Qt Creator,选择文件
  1. 选择新建项目或文件后:Application:应用程序(使用Qt写一个GUI程序就应该选择这个)
  1. 选择路径,可以勾选上设为默认的项目路径
  1. 选择qmake,Qt 框架会在编译的时候,自动调用一些列的生成工具,基于你自己写的代码,生成一系列的其它的 C++ 代码,最终编译的代码,也是最后生成的这些代码
  1. 选择第二个,Base class:使用 Qt Creator 创建项目,会自动的生成一些代码出来。生成的代码就包含一个类,此处就是要选择这个自动生成的类的父类是谁,Qt 中内置的类都是以 Q 为前缀开头的!!
  • QMainWindows:表示一个完整的程序窗口,包含菜单栏,工具栏,状态栏......
  • QWidget:表示一个控件(窗口上的一个具体的元素,输入框,按钮,下拉框,安萱按钮,复选按钮......)
  • QDialog:表示一个对话框
  1. form file 非常关键

Qt 中创建图形化界面的程序,有两种方式:

  1. 直接通过C++代码的方式创建界面
  2. 通过form file,以图形化的方式来生成界面

此时,就可以使用 Dt Designer 或者 Qt Creator 来编辑这个ui文件,从而以图形化的方式快速方便的生成图形化界面

  1. 选择翻译文件(对应的语言),暂时不用关注,和国际化相关的
  1. 选择一下基于哪个编译器的 Qt SDK 来构建后续代码
  1. 要将代码上传到git上就选择第二个,否则就第一个
  1. 点击完成此时就创建好了,点击左侧的运行按钮即可
  1. 运行结果已经出来了,就是一个空白的界面,因为我们什么也没写
  1. 代码解释
  • main函数
cpp 复制代码
#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])  //main函数的形参就是命令行参数
{
    QApplication a(argc, argv);  //编写一个Qt的图形化界面程序,一定要有 QApplication 对象!!!
    Widget w;   // Widget 就是刚才创建项目时,默认生成的类名(自己也可以改,但是不推荐),创建一个控件对象
    w.show();   //让控件显示出来 .hide()方法让控件隐藏,都是Widget的父类QWidget提供的
    return a.exec();  //exec()就是让程序执行起来,跑起来。和linux中的exec进程程序替换不一样
}
  • Widget的声明
cpp 复制代码
// Widget.h 
#ifndef WIDGET_H
#define WIDGET_H
//以上便是对Widget类的声明,推荐写完#pragma once

#include <QWidget>  //父类所对应的头文件

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget  //QWidget,创建项目时,选择的父类,Qt SDK内置的,使用该类就要包含对应的头文件
{
    Q_OBJECT  //Qt内置的宏,本质上是文本替换,展开之后,会生成一大堆的代码。如果某个类想使用 "信号和槽" 就需要引入这个宏

public:
    Widget(QWidget *parent = nullptr);  //构造,QWidget *parent = nullptr:Qt中引入了"对象树"机制,创建Qt的对象,就可以把这个对象给挂到对象数上。往树上挂的时候就需要指定"父节点",对象树就是一个普通的 N 叉树 不是二叉
    ~Widget();  //析构

private:
    Ui::Widget *ui;  //跟 form file密切相关
};
#endif // WIDGET_H
  • Widget的定义
cpp 复制代码
// widget.cpp
#include "widget.h"
#include "ui_widget.h"  //form file 被 qmake生成的头文件

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

Widget::~Widget()
{
    delete ui;
}
  • 关键要点,form file!!!

直接双击 .ui 文件,此时Qt Creator 就会调用 Qt Designer,打开ui文件,图形化的界面编辑器

点击一下左侧的编辑,就是ui文件的原本的样貌,这个格式就是 xml 格式,和html 相似,有成对的标签也有单标签

xml 这里的标签,有哪些含义,都表示声明含义,是由Qt大佬们自定义的,具体是什么含义不需要关注,而html中的标签是固定的。

Qt 中使用的xml文件就是去描述程序的界面是啥样的,进一步通过 qmake 会调用相关的工具,依据这个xml文件生成一些 C++ 代码,从而把完整的界面构造出来

  • 左侧还有一个Empty.pro的文件

.pro 是Qt项目的工程文件,也是 qmake 工具构建时候的重要依据

.pro 类似于之前 Linux中的 Makefile文件,qmake 搭配 .pro 起到的作用就和 Makefile 是类似的。Qt Creator 把这个过程中编译的细节都封装好,不需要过多的关注,著需要点击 运行 按钮就行了,就直接编译运行了

  • 打开文件资源管理器,看看项目对应的目录是什么样子的

往上一级目录可以看到还有一个目录,再运行一次程序之后,就会在 项目目录 并列的地方,多出来一个"build-xxxxxxxxxx"目录,这个目录里面就是该项目运行过程中,生成的一些临时文件

"build-xxxxxxxxxx"目录里面的文件:

  • Makefile:编译 Qt程序,还是会用到 makefile ,只不过 makefile 不需要我们自己手动写了,而是qmake自动生成
  • **ui_widget.h:就是 widget.ui xml 生成的 .h 文件!!!**在 widget.cpp 中就包含此头文件 #include "ui_widget.h"
  • debug目录下的.exe程序就是最终生成的程序,双击:

相关推荐
Quz14 小时前
QML 常见的四种导航布局
qt
江湖人称菠萝包16 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter2-GUI应用程序设计基础
笔记·qt·qt5
重生的黑客17 小时前
Qt 常用控件精讲(1):QWidget 核心属性全解 —— 从 geometry 到 qrc 与 QSS
c++·qt·qwidget·qss·常用控件
江湖人称菠萝包17 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter1-认识Qt
笔记·qt·qt5
Quz1 天前
QML StackView:实现卡片堆叠效果
qt
Quz1 天前
QML Drawer 抽屉导航详解
qt
≮傷£≯√2 天前
QGraphicsScene(一) drawCAD 问题
qt
qq_401700413 天前
Qt QUrl 详解与代码示例
开发语言·数据库·qt
雨田言炎3 天前
Qt的常用类QList--序列数据管理
嵌入式硬件·qt