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程序就是最终生成的程序,双击:

相关推荐
Cx330❀7 小时前
Qt 多线程深度解析:从底层原理到 UI 线程与同步实战
开发语言·qt·ui·搜索引擎·性能优化·图形渲染
西西弗Sisyphus7 小时前
Qt6 实现 会动的界面像物理世界一样
c++·qt
MayZork8 小时前
Qt 开发集成CMake + vcpkg
开发语言·c++·qt
书生执笔画浮沉9 小时前
Linux桌面端应用向鸿蒙PC迁移适配纪实
c++·qt·c·信创·海思·libc·ohos
今夜有雨.10 小时前
图像运算、掩膜/ROI 与绘制交互
c语言·数据结构·c++·qt·算法·计算机视觉
时间的拾荒人13 小时前
Qt 网络编程与音视频开发实战:从 UDP/TCP 到 HTTP 与多媒体
网络·qt·音视频
扶尔魔ocy1 天前
【qt openGL入门笔记】FPS相机
qt·opengl
扶尔魔ocy2 天前
qt openGL入门笔记】FPS相机和轨道相机
qt·opengl
尘客-追梦2 天前
qmake / jom / 影子构建:把编译管起来
开发语言·c++·qt
qeen872 天前
【QT】 信号与槽初始
开发语言·笔记·qt·学习