轉自: QSignalMapper
在QT編程中,如果遇到多個控件,但是他們的槽大致相同,這個該怎么處理,比如10個button,難道要寫10個槽,可以不必這樣,QSignalMapper可以幫組我們解決。
QSignalMapper *signalMapper = new QSignalMapper(this);
for (i = 0; i < 10; i++) {
button = new QPushButton(QObject::tr(buttonName));
signalMapper->setMapping(button[i], i);
connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));
}
connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(handle(int)));
然后我們的槽可以這樣寫
switch(i) {
}
i 表示是哪個button發生了clicked信號