QT5 项目结构

使用 Qt Creator 创建项目

使用 Qt Creator 创建项目,会自动生成如下文件:
在这里插入图片描述

文件意义
main.cpp应用程序的入口, 实现创建窗体和进行消息循环
mainwindow.h、 mainwindow.cpp主窗体的声明与实现,自动生成构造和析构函数

mainwindow.h 文件

部分截取

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT	// 宏定义, 表示会使用信号和槽

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.ui 文件

此文件是使用 UI 设计器( designer )进行界面设计的文件,使用XML描述,当构建项目时,会生成对应的 ui_mainwindow.h 文件, 此头文件会实现一个类(Ui_MainWindow),这个类是完成创建 .ui 文件中所描述的窗体。

最后还有命名空间, 实现一个类,仅继承自动生成的窗体类。

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

在 mainwindow.h 的主窗体类有如下对象, 此对象就是对应 ui_mainwindow.h 的命名空间中的类, 有了指针就可以创建窗体了(ui->setUp()), 也使用 ui->objName 访问 UI 设计器中创建的组件。

Ui::MainWindow *ui;

如果创建项目时没有勾选生成窗体, 则 .ui 文件不会存在, 可以使用代码添加组件。

.pro项目文件

QT       += core gui   //加载core、gui模块,使得其中的库可以使用
//QT5将 widgets 从 gui 中分离了出来,为了向下兼容,仅在QT大于4的版本时加载widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = sample  //生成的程序名称

TEMPLATE = app  //模板,使用QTCreator生成项目时选择的Application
//项目的源文件,每创建一个.cpp自动添加。生成 makefile 文件
SOURCES += \
        main.cpp \
        mywidget.cpp
//项目的头文件,也是自动添加     
HEADERS += \
        mywidget.h
//使用ui建立项目时会生成的文件
FORMS += \
        mainwindow.ui

//包含第三方库的头文件
INCLUDEPATH += /usr/include/opencv2

//需要链接的第三方库路径以及对应的库
LIBS += -L/usr/lib/x86_64-linux-gnu/  -lopencv_core -lopencv_highgui -lopencv_imgproc -lz

.pro项目文件里的内容,尽量不要去改动,除非要添加其他库,如最后两行,Qt根据.pro去 Build Project。

添加组件的方式

  1. UI 设计器拖曳添加

  2. 代码添加

    1. QT中每个对象都有 setParent() 的函数,设置之后,对应组件就会出现在父对象的坐标(0, 0) 处, 完成了添加组件的功能。 另外也将此对象添加到父对象的对象树中,自动完成析构工作。
    2. 创建对象时在构造函数传入父对象, 例如 centralWidget = new QWidget(MainWindow); 自动生成的 ui_mainwindow.h 的就是这种写法,比较方便,部分组件还需要手动添加。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值