一、实例化两个按钮并添加
代码:
b1.setParent(this);
b1.setText("你好");
b1.move(100,100);
b2 = new QPushButton(this);
b2->setText("不好");
运行效果:
二、连接信号
查看PushuButton的信号如下:
选择相应的信号,我选的是press(),编写代码如下:
代码:
connect(&b1, &QPushButton::pressed, this, &MainWindow::close);
/*&b1: 信号发出者,指针类型
* &QPushButton::pressed:处理的信号 ,&发送者的类名::信号名字
* this:信号接收者
* &MainWindow::close:槽函数,也就是信号处理函数,当接受到信号执行该函数 &接收者类名::槽函数名字
*/
效果:
窗口关闭:
三、自定义槽
我们有自己的需求,或许我们想要按下按钮时做一些复杂的事情。这就需要我们自己写一个槽函数并连接
代码:
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QWidget(parent)
{
b1.setParent(this);
b1.setText("你好");
b1.move(100,100);
b2 = new QPushButton(this);
b2->setText("不好");
connect(&b1, &QPushButton::pressed, this, &MainWindow::close);
/*&b1: 信号发出者,指针类型
* &QPushButton::pressed:处理的信号 ,&发送者的类名::信号名字
* this:信号接收者
* &MainWindow::close:槽函数,也就是信号处理函数,当接受到信号执行该函数 &接收者类名::槽函数名字
*/
/*自定义操。普通函数用法
* Qt5:任意的成员函数,普通全局函数,静态函数
* 槽函数需要和信号一致(参数,返回值)
* 由于信号都是没有返回值,所以槽函数一定没有返回值
*/
connect(b2, &QPushButton::released, this, &MainWindow::mySlot);
}
void MainWindow::mySlot(){
b2->setText("哈哈哈");
}
MainWindow::~MainWindow()
{
}
效果:
注意:
- 一个信号可以连接多个槽