首页>观点 > 正文

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

2023-08-11 14:17:16    出处:博客园


(资料图片)

槽和普通的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()));

关键词:

消费
产业
立秋已过,请警惕“轮状病毒” 立秋后,很多孩子容易腹泻,其实,这是感染了轮状病毒性胃肠炎
杭州亚运会正式发布“亚运元宇宙” 10日,杭州亚组委联合中国移动正式发布“亚运元宇宙”平台,推出我国首
北京市组织抢修传输光缆链路 全力做好通信保障 受本轮强降雨影响,北京房山、门头沟等区域转播站、村发射站、有线电视
基金