一、信号与槽说明
信号 signal
当控件被点下、按下、松开等事件发生的时候,会发送一个信号。我觉得可以理解成触发事件。
槽 slot
就是一个函数,用来处理signal事件的函数。
关联
信号和槽要进行关联,使用QObject::connect(sender, SIGNAL(signal()),receiver,SLOT(slot()));
connect是QObject的一个静态函数,其中QObject可以忽略。
要注意的是:
- 一个信号可以连接多个槽
- 多个信号可以连接同一个槽
- 一个信号可以连接另一个信号
二、可视化生成槽函数原型
- 创建一个窗体
- 右键点按钮控件,选择转到槽
- 选择accept
- 可以看到源代码中生成了相关的槽函数
- 添加其它一些文本框这里给两个文档框分别命名 : txtName txtPassword
三、添加一点逻辑代码
#include "dialoglogin.h"#include "ui_dialoglogin.h"#include DialogLogin::DialogLogin(QWidget *parent) : QDialog(parent), ui(new Ui::DialogLogin){ ui->setupUi(this); // 固定窗口大小 setFixedSize(this->width(),this->height()); setWindowTitle("测试");}DialogLogin::~DialogLogin(){ delete ui;}void DialogLogin::on_pushButton_clicked(){ if(2>1){ QString name = this->ui->txtName->text(); QString pass = this->ui->txtPassword->text(); if(name=="user" && pass =="123456"){ qDebug() << "Success" << endl; }else{ qDebug() << "Failure" << endl; } }}
修改入口:
#include "mainwindow.h"#include "dialoglogin.h"#include int main(int argc, char *argv[]){ QApplication a(argc, argv); DialogLogin w; w.show(); return a.exec();}
四、运行看看效果
输入账号 user 密码123456 可以看到控制台打印 Success