QT - 基本文件介绍

QT - 1

Qt历史:

  1. 1991年-奇趣科技开发
  2. 优点
    2.1 跨平台
    2.2 效率高
    2.3 嵌入式
    2.4 市场份额好
  3. 成功案例:
    3.1 Linux桌面环境
    3.2 wps
    3.3 谷歌地图
    3.4 屏幕共享
    3.5 VLC
    ---------------------------------------------------------------------

实例1:

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    //应用程序对象, a, Qt中有且仅有一个应用程序对象
    QApplication a(argc, argv);
    //创建Widget对象w, Widget基类 Qwidget
    Widget w;
    //默认窗口是不会弹出的,如果想弹出,调用show方法
    w.show();
    //a.exec()进入消息循环机制
    return a.exec();
}

.pro文件介绍:

QT       += core gui  //qt包含的模块 core与gui
//大于4版本的qt 包含widget模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = first //生成的目标文件 'first'
TEMPLATE = app //模板 应用程序

//
DEFINES += QT_DEPRECATED_WARNINGS


CONFIG += c++11

//源文件
SOURCES += \
        main.cpp \
        widget.cpp
//头文件
HEADERS += \
        widget.h
FORMS += \
        widget.ui
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

生成的头文件文件介绍:

#ifndef WIDGET_H //防止头文件重复编译
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT  //Q_OBJECT宏,写了这个宏,就支持了QT中的信号和槽机制

public:
    explicit Widget(QWidget *parent = nullptr); //构造函数
    ~Widget(); //析构函数

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

生成widget文件介绍:

#include "widget.h"
#include "ui_widget.h"
#include <Q>

Widget::Widget(QWidget *parent) : //构造函数
    QWidget(parent), //初始化列表
    ui(new Ui::Widget) //
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

QT命名规范&快捷键

1.类名首字母大写,单词与单词之间首字母大写
2.函数,变量 首字母小写, 单词与单词之间 首字母大写

ctrl + B 编译
ctrl + R 运行
ctrl + F 查找
帮助文档
全屏帮助文档
退出帮助文档
ctrl + 鼠标滚轮 字体缩放
ctrl + i 自动对齐
ctrl + / 多行注释
ctrl + shift + up / down 整行移动
同名.h 与.cpp 之间切换


帮助文档的简单介绍

Header: #include //需要包含的头文件
qmake: QT += widgets //需要包含的模块
Inherits: QAbstractButton //父类
Inherited By: QCommandLinkButton //被继承


QT对象树的概念

在Qt中创建对象的时候会提供一个Parent对象指针, 下面来解释parent到底是干什么的

QObject是一对象树的形式组织起来的
当你创建一个QObject对象时,会看到QObject的构造函数接受一个
QObject指针作为参数,这个参数就是parent,也就是父对象指针
当父对象析构的时候,这个列表中的所有对象也会被析构
这种机制在GUI程序设计中相当有用,例如,一个按钮有一个QShortcut
对象作为其子对象.当我们删除按钮的时候,这个快捷键理应当被删除

先析构儿子,然后父亲,但打印顺序相反.

对象树
所有new出来的对象,不用释放
原因children表中的对象会在窗口关闭后进行自动释放


QT中的信号和槽

connect(信号发送者, 发送的信号, 信号的接收者, 处理的函数(槽函数));

查找button按钮的信号
QPushButton里:
Qt 5 Assistant-> QPushButton-> Additional Inherited Members ->
QAbstractButton-> Signals

void clicked(bool checked = false) //点击或松开时触发
void pressed() //按下触发
void released() //弹起触发
void toggled(bool checked) //按下是True,弹起False

例 -> 点击按钮触发事件:
Linux:
connect(btn2, SIGNAL(clicked()), this, SLOT(close()));
windows:
connect(Btn, &QPushButton::clicked, this, &QWidget::close)
connect(Btn, QPushButton::clicked, this, QWidget::close)

自定义信号函数写法:
创建c++类-> QObject -> 头文件
//自定义的信号,需要写到signals下
//返回类型必须为void
//信号只需声明,不需要实现
//信号可以有参数,可以重载

自定义槽函数写法:
在头文件中
写在: public slots:下
//高版本可以写到public下或全局函数
//槽函数返回值为void
//槽函数需要声明,也需要实现
//槽函数也可以有参数,也可以重载


猜你喜欢

转载自www.cnblogs.com/lyxf/p/12262960.html