1.QT写代码的框架。
#include "widget.h"
#include <QApplication> //QT的框架头文件
int main(int argc, char *argv[])
{
QApplication a(argc, argv); //QT的框架初始化
Widget w; //定义一个窗口对象
w.show(); //将创建的窗口空间显示
return a.exec(); //让程序一直执行,相当于while(1)
}
2.创建空项目。
#include "widget.h"
#include <QApplication> //QT的框架头文件
#include <QDebug> //调试类
int main(int argc, char *argv[])
{
QApplication a(argc, argv); //QT的框架初始化
Widget w; //定义一个窗口对象
w.resize(400,300); //设定窗口的大小
w.setWindowTitle("hello qt"); //设置窗口的标题
w.show(); //将创建的窗口空间显示
qDebug()<<"hello"; //应用程序输出hello
return a.exec(); //让程序一直执行,相当于while(1)
}
3.QT命名规则。
对于类的命名 大驼峰法(单词首字母大写)。
对于函数的命名 小驼峰法(单词首字母小写,后面的单词首字母大写)。
4.pro文件。
QT一个类对应一个头文件,类名就是头文件名称。
QApplication应用程序:
1.管理图形用户界面应用程序的控制流和主要设置。
2.是Qt的整个后台管理的命脉它包含主事件循坏,在其中来自窗口系统和其他资源的所有事件处理和调度。它也是应用程序的初始化和结束,并且提供对话管理。
3.对于任何一个使用Qt的图形用户界面应用程序,都正好存在一个QApplication对象,而不论这个应用程序时在同一时间内是不是又0、1、2或者更多个窗口。
a.exec():
程序进入消息循坏,等待对用户输入进行响应。这里main()把控制权转交给Qt,Qt完成事件处理工作,当应用程序退出的时候exec()的值就会返回。在exec()中,Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。
信号与槽
信号槽时Qt框架引以为豪的机制之一。所谓信号错,实际就是观察者模式。当某个事件发生之后,比如,按键检测到自己被点了一下,他就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,他就会使用连接(connect)函数,意思就是,将想要处理的信号和自己的一个函数(称之为槽(slot))绑定未处理这个信号。也就是说,当信号发出时,被连接的槽函数就会自动被回调。
conne()函数最常用的一般形式:
connect(sender,signal,receiveer,slot);
sender:发出信号的对象,signal:发送对象发出的信号,receiver:接收信号的对象,
slot:接收对象在接收到信号之后需要调用的函数(槽函数)。
#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//创建一个按钮,点击按钮关闭窗口
QPushButton *p = new QPushButton("关闭",this);
//设置连接 点击按钮会产生信号 ,会调用窗口的关闭函数
connect(p,&QPushButton::clicked,this,&QWidget::close);
}
Widget::~Widget()
{
delete ui;
}
自定义槽函数
widget.c
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
button = new QPushButton;
button->setParent(this);
button->setText("打印千峰物联网牛逼");
//注册信号与槽的连接
//槽函数可以是普通的成员函数
//如果信号没有参数,槽函数也不能又参数,
//如果信号又参数,槽函数可以有参数也可以没有
connect(button,&QPushButton::pressed,this,&Widget::print);
}
void Widget::print()
{
qDebug()<<"千峰物联网";
}
Widget::~Widget()
{
delete ui;
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
QPushButton *button;
public slots: //公有权限槽函数
void print(); //槽函数
private:
Ui::Widget *ui;
};
#endif // WIDGET_H