Qt 中默认代码

目录

        主函数

widget的声明

widget的定义

form file

.pro 文件


主函数

#include "widget.h"
​
#include <QApplication>
​
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

上面就是 Qt 刚创建的一个 Widget 类中的默认主函数,那么这个默认的主函数是什么意思呢?

  • 在 main 函数中的两个参数一般是命令行上用的参数,用来将命令行中输入的数据,以参数的方式传到这个程序中。

  • QApplication 这个对象是一个 Qt 程序必须有的。

  • Widget 就是我们选择创建的文件的类名,这个类继承自 Qt 中的 QWidget 的一个类,而在 Qt 中继承是特别常见的。

  • w.show() 就是让这个控件中的内容显示出来。

  • a.exec() 就是执行起来这个程序。

widget的声明

#ifndef WIDGET_H
#define WIDGET_H
​
#include <QWidget>
​
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
​
class Widget : public QWidget
{
    Q_OBJECT
​
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
​
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

这个 widget 就是我们自己选择创建的类,上面这个就是默认代码中 widget 中的声明

  • 最上面的两个宏定义(条件编译)的意思就是防止头文件重复包含,和 #pragma once 是一个意思

  • namespace Ui { class Widget; } 这个就是Qt 中的 ui 文件相关的

  • public QWidget 是 Widget 继承的父类,我们前面也说了 Qt 是特别喜欢使用继承多态的

  • Q_OBJECT 是一个宏,展开后就是一堆代码的替换,如果没有这个代码,那么就没法使用Qt中的信号槽机制

  • 构造函数中的参数是用来将这个对象挂到对象树上的,因为Qt是一个半自动化的内存释放,只要将创建的对象挂到对象树上,那么Qt就会帮你释放

  • 最下面的成员变量的ui是和 form file 相关的

widget的定义

#include "widget.h"
#include "ui_widget.h"
​
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}
​
Widget::~Widget()
{
    delete ui;
}
​
  • 在Widget构造函数中初始化列表中,使用parent 初始化基类

  • 还有一个就是我们刚才说的 ui ,然后初始化

  • 在构造函数中调用的 ui->setupUi 就是用来将 Widget 和 form file 绑定的

form file

上面我们一直在说 form file ,那么form file 是什么呢? form file 实际上就是 ui 文件,我们可以看一下Qt 中的ui文件是什么样子的?

这里我们双击这个 ui 文件即可,然后我们就会进入到 qt disigner 中

这个就是可以使用拖拽来设计的ui文件,左边的那些都是一些常用的控件,我们可以使用这些控件来实现我们想要的功能。

然后我们可以再次点击左边的编辑按钮,此时我们就可以看到ui文件的本来面目。

就是这个样子,这就是 ui 文件的本来的面目,这个文件最后就会由 qt designer 将这个文件里面的内容,转化为 C++ 代码。

.pro 文件

在Qt Creater 中还有一个很重要的文件,就是 .pro 文件,我们看一下里面的内容

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
​
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
 

这个文件里面主要就是关于 Qt 构建的时候需要使用到的。

  • QT += core gui 因为 Qt 中是有很多模块的,但是因为很多时候用不到一些其他的模块,所以这个就是使用那个模块,就需要将对应的模块写到这个后面

  • CONFIG += c++11 这个就是当 Qt 编译的时候,按照什么标准来编译的,这里是使用 C++11来编译的

  • SOURCES HEADERS FORMS 这几个就是Qt用来管理那些文件是需要编译的,但是这里是不需要我们自己维护的,而是 Qt 会自动帮我们维护

这个 .pro 文件就像我们平时在 Linux 下写代码编译的时候使用到的 makefile 而这个文件加上 qmake 就和我们使用的 makefike 是一样的。

  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naxx Crazy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值