Qt connect関数使用時のslotへのパラメータ伝達
5つのbuttonがあり、button 1~button 5があり、button 1をクリックすると「button 1 clicked」が出力され、button 2をクリックすると「button 2 clicked」が出力されるシーンを想定しますが、どのように実現すればいいのでしょうか.最も乱暴な実装は5つのslotを書き、buttonとslotをそれぞれconnectすることですが、これは明らかに多くの重複コードを増加させ、良い実装ではありません.1つの比較的良い方法は、パラメータのないsignalを受信し、int、QString、QWidget*またはQObjectのようなパラメータのあるsignalを再送信することができるQSignalMapperを使用することである.
転送元を明記してくださいhttp://blog.csdn.net/imred
QSignalMapper *signalMapper = new QSignalMapper(this);
connect(button1, SIGNAL(triggered()), signalMapper, SLOT(map()));
connect(button2, SIGNAL(triggered()), signalMapper, SLOT(map()));
connect(button3, SIGNAL(triggered()), signalMapper, SLOT(map()));
connect(button4, SIGNAL(triggered()), signalMapper, SLOT(map()));
connect(button5, SIGNAL(triggered()), signalMapper, SLOT(map()));
signalMapper->setMapping(button1, 1);
signalMapper->setMapping(button2, 2);
signalMapper->setMapping(button3, 3);
signalMapper->setMapping(button4, 4);
signalMapper->setMapping(button5, 5);
connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(printMsg(int)));
そしてprintMsg(int)で異なる入力パラメータに従って情報を出力すればよい.参照可能https://stackoverflow.com/questions/5153157/passing-an-argument-to-a-slot 転送元を明記してくださいhttp://blog.csdn.net/imred