版本:QT5.14.2
快捷键:
- 注释:ctrl+/
- 运行:ctrl+r
- 编译:ctrl+b
- 字体缩放:ctrl+滚轮
- 查找:ctrl+f
- 整行移动:ctrl+shift+上下箭头
- 帮相文档:F1
- 自动对齐:ctrl+i
- 同名之间.h文件与.cpp文件切换:F4
添加模块(按钮):简单演示:
#include "mywidget.h"
#include<QPushButton>
myWidget::myWidget(QWidget *parent)
: QWidget(parent)
{
// QPushButton * btn = new QPushButton;
// btn->setParent(this);
// btn->setText("第一个按钮");
QPushButton * btn2 = new QPushButton("第二个按钮",this);
resize(600,400);
//移动按钮
btn2->move(100,100);
//设置标题
setWindowTitle("窗口名字");
}
myWidget::~myWidget()
{
}
QT创建对象过程中会提供一个Parent对象指针,QObject是一个大的父类,当父对象析构时,子对象也会被析构,所以子对象不用手动释放。
pro文件就是项目文件,打开看类似与CMakelists,基本不需要修改,用到未默认模块时手动添加即可。
#include打印输出
qDebug()<<"我的按钮类构造调用 "<<endl;
qDebug()类似与cout
QT坐标系:
以左上角为原点(0,0),X向右增大,Y向下增加。对于嵌套窗口,其坐标是相对于父窗口来说的。
信号和槽:
connect :信号发送,信号内容(函数地址),信号接受,信号处理(槽)
信号槽的优点:松散耦合,信号发送端与接收端本身没有关联,通过connect链接,将俩端耦合在一起。
断开信号:disconnect()
connect(myBtn,&QPushButton::clicked,this,&myWidget::close)`;
自定义信号写到signals下,返回值是void,只需要声明不需要实现,可以有参数,可以重载。
**自定义槽函数:**早期QT版本必须写到public slots下,高级版本可以写到public或者全局下,返回值为void,需要声明也需要实现,可以有参数,可以发生重载。
拓展:
1.信号可以连接信号
2.一个信号可以连接多个信号
3.多个信号可以连接同一个槽函数
4.信号和槽函数参数必须类型一一对应
5.信号的参数个数可以多余槽函数的参数个数
关于视频课的一个作业:
作业要求:实现图形界面有俩个按钮,一个按一下弹出一个新界面,按下另一个按钮关闭新界面:
代码如下:
#include "widget.h"
#include "ui_widget.h"
#include<QPushButton>
#include<QWidget>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QWidget *one=new QWidget;
QPushButton * btn = new QPushButton;
btn->setParent(this);
btn->setText("open");
QPushButton * btn1 = new QPushButton;
btn1->setParent(this);
btn1->setText("close");
resize(600,400);
//移动按钮
btn1->move(100,100);
connect(btn,&QPushButton::clicked,one,[=](){
one->show();
});
connect(btn1,&QPushButton::clicked,one,&Widget::close);
}
Widget::~Widget()
{
delete ui;
}
其中注意lambda表达式,是C++11新特性