文件名称:信号映射器-QT-NOKIA培训资料(中文版)
文件大小:1.89MB
文件格式:PPT
更新时间:2024-05-16 03:17:43
QT NOKIA 培训 中文版
信号映射器 QSignalMapper 类解决了这个问题 将每个值映射到每个发射器 介于可重用类之间 { QSignalMapper *m = QSignalMapper(this); QPushButton *b; b=new QPushButton("1"); connect(b, SIGNAL(clicked()), m, SLOT(map())); m->setMapping(b, 1); ... connect(m, SIGNAL(mapped(int)), this, SLOT(keyPressed(int))); } 创建一个信号映射器 关联按钮到映射器 关联一个发射器和一个值。 关联映射器到槽上。 * 为解决这个问题,信号映射器类( signal mapper class)进入视野。 它允许我们用一个特定值关联每个发送者。即把一个不带参数的信号转换成带一个参数的一个信号,其中参数值取决于原始信号的发送者。 诀窍是把信号映射器防止在按钮和keyPressed槽之间。 使用setMapping,使到每一个按钮被映射成一个值(可以是int,QString,一个QWidget指针或一个QObject指针)。 每一个按钮的clicked信号被连接到信号映射器的映射槽。然后映射器的映射信号被连接到keyPressed槽。 待续