一、工程文件介绍
1.1 main.cpp
#include "widget.h"
#include <QApplication> // 包含一个应用程序类的头文件
//argc:命令行变量的数量;argv:命令行变量的数组
int main(int argc, char *argv[])
{
//a应用程序对象,在Qt中,应用程序对象有且仅有一个
QApplication a(argc, argv);
//窗口对象 Widget父类-》QWidget
Widget w;
//窗口对象 默认不会显示,必须调用show方法显示窗口
w.show();
//让应用程序对象进入消息循环,代码堵塞到当前行
return a.exec();
}
1.2 project1.pro
QT += core gui //Qt包含的模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //大于4版本以上,包含widget模块
CONFIG += c++11 //配置中多加c++11
DEFINES += QT_DEPRECATED_WARNINGS
before Qt 6.0.0
SOURCES += \ //源文件
main.cpp \
widget.cpp
HEADERS += \ //头文件
widget.h
FORMS += \
widget.ui
1.3 widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT //Q_OBJECT宏,允许类中使用信号和槽的机制
public:
Widget(QWidget *parent = nullptr); //构造函数
~Widget(); //析构函数
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
1.4 快捷键
1.注释: ctrl + /
2.运行: ctrl + r
3.编译: ctrl + b
4.查找: ctrl + f
5.整体移动: ctrl + shift + 向上箭头 或 向下箭头
6. 帮助文档: F1
7.自动对齐: ctrl + i
二、 常用操作
2.1 文档使用
2.2 常用操作
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//创建一个按钮
QPushButton* btn = new QPushButton;
//btn->show(); //show以顶层方式弹出窗口控件
//让btn对象 依赖在Widget窗口中
btn->setParent(this);
//重置按钮大小
btn->resize(100,100);
//显示文本
btn->setText("第一个按钮");
//重置窗口大小
resize(600,400);
//设置固定窗口大小
setFixedSize(400,400);
//移动btn按钮
btn->move(200,200);
//设置窗口标题
setWindowTitle("第一个窗口");
}
2.3 调用析构函数
Qt中关闭窗口会自动调用析构,从底层一步步向上析构
当创建的对象在堆区时候,如果指定的父亲是 Qobiect派生下来的类或者Qobject可以不用管理释放的操作,将对象会放入到对象树中
2.4 坐标系
三、信号与槽
3.1
参数一:信号的发送者
参数二:发送的信号(函数地址)
参数三:信号的接受者
参数四:处理槽函数(函数地址)
connect(btn, &QPushButton::clicked, this, &Widget::close);
Teacher.h
//自定义信号
signals:
//自定义信号,写到signals下
//返回值是void,只需要声明,不需要实现
//可以有参数,可以重载
void hungry();
Student.h
//自定义槽函数
public slots:
//槽函数,可以写到public slots,也可以写到public全局下
//返回值void,需要声明,也需要实现
//可以有参数,可以发生重载
void treat();
//emit,触发自定义信号
void Widget::classIsover()
{
//下课函数,调用后,触发老师饿了的信号
emit zt->hungry();
}
3.2 自定义信号和槽函数出现重载
//Student.h
public slots:
//槽函数,可以写到public slots,也可以写到public全局下