1.信号与槽机制
1.信号(signal):信号本质就是事件,当事件发生后,发送一个信号。
2.槽(slot):接收信号的函数。
2.信号的连接方式connect
connect(,,,,);
参数1,sender:发送信号的对象;
参数2,signal:sender对象的信号;
参数3,receiver:信号接收者;
参数4,method:receiver对象的槽函数。
3.连接方式
1.一个信号可以与一个信号连接
2.一个信号可以跟多个槽连接
3.一个槽可以响应多个信号
4.实例
#include "dialog.h"
#include <QGridLayout>
const static double PI = 3.1415;
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
qlb1 = new QLabel(this); // 标签1
qlb1->setText(tr("请输入半径"));
qlb2 = new QLabel(this);// 标签2
qedit = new QLineEdit(this);// 编辑文本
btn = new QPushButton(this);// 按钮
btn->setText(tr("计算体积"));
QGridLayout *mlay = new QGridLayout(this);//改变文本位置
mlay->addWidget(qlb1,0,0);
mlay->addWidget(qedit,0,1);
mlay->addWidget(qlb2,1,0);
mlay->addWidget(btn,1,1);
connect(qedit,SIGNAL(textChanged(QString)),this,SLOT(CalcBallVolume()));// 信号与槽连接
}
Dialog::~Dialog()
{
}
void Dialog::CalcBallVolume()
{
bool isLoop;
QString tempStr;
QString valueStr = qedit->text();
int valueInt = valueStr.toInt(&isLoop);
double dVSum = 4.0/3.0*PI*valueInt*valueInt*valueInt;
qlb2->setText(tempStr.setNum(dVSum));
}