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 是一样的。

相关推荐

  1. Android13 应用代码修改热点默认密码

    2024-04-15 08:58:02       18 阅读
  2. qt——设置ComBox的默认显示内容

    2024-04-15 08:58:02       33 阅读
  3. Css默认与继承

    2024-04-15 08:58:02       60 阅读
  4. idea默认代码生成脚本修改

    2024-04-15 08:58:02       38 阅读
  5. Qt C++海康SDK类注册回调代码

    2024-04-15 08:58:02       31 阅读
  6. Ubuntu 22.04 配置qtchooser默认启用 Qt6

    2024-04-15 08:58:02       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-15 08:58:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-15 08:58:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-15 08:58:02       82 阅读
  4. Python语言-面向对象

    2024-04-15 08:58:02       91 阅读

热门阅读

  1. IDE:常见的集成开发环境

    2024-04-15 08:58:02       200 阅读
  2. C语言数组的初始化方法大全

    2024-04-15 08:58:02       34 阅读
  3. 软件测试Linux 必备考点

    2024-04-15 08:58:02       134 阅读
  4. 神州数码交换机基本指令

    2024-04-15 08:58:02       31 阅读
  5. 手写一个民用Tomcat (04)

    2024-04-15 08:58:02       32 阅读