《C++ GUI Qt4编程》第2章——创建对话框——深入介绍信号和槽

博客园   2023-08-11 10:25:02


(资料图片)

槽和普通的C++成员函数几乎是一样的——可以是虚函数;可以被重载;可以是公有的、保护的或者私有的,并且也可以被其他C++成员函数直接调用,它们的参数可以是任意类型。唯一不同的是:槽还可以和信号连接在一起,在这种情况下,每当发射这个信号的时候,就会自动调用这个槽。

connect(sender, SIGNAL(signal), receiver, SLOT(slot));

这里的sender和receiver是指向QObject的指针,signal和slot是不带参数的函数名。实际上,SIGNAL()宏和SLOT()宏会把它们的参数转换成相应的字符串。

信号与槽的连接

// 一个信号可以连接多个槽(顺序不确定)connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));connect(slider, SIGNAL(valueChanged(int)), this, SLOT(updateStatusBarIndicator(int)));// 多个信号可以连接同一个槽connect(lcd, SIGNAL(overflow()), this, SLOT(handleMathError()));connect(calculator, SIGNAL(divisionByZero()), this, SLOT(handleMathError()));// 一个信号可以与另外一个信号连接(当发射第一个信号时,也会发射第二个信号)connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SIGNAL(updateRecord(const QString &)));// 连接可以被移除(这种情况很少用到,因为当删除对象时,Qt会自动移除和这个对象相关的所有连接)disconnect(lcd, SIGNAL(overflow()), this, SLOT(handleMathError()));
猜你喜欢

[ 最近更新 ]