QSignalMapper 複数の信号をオブジェクトからメイン プログラムのスロットに接続するプログラムを取得しました。
class A()
{
private:
QSignalMapper * signalMapperRead_;
std::vector<Service*> services_;
public:
void initConnection()
{
signalMapperRead_ = new QSignalMapper();
connect(signalMapperRead_, SIGNAL(mapped(int)), this, SLOT(readyToSendToService(int)));
for ( size_t i = 0 ; i < services_.size() ; ++i )
{
connect(services_.at(i), SIGNAL(readyToSendToServer()), signalMapperRead_, SLOT(map()));
signalMapperRead_->setMapping(services_.at(i), (int)i);
}
}
int run()
{
initConnection();
for(;;)
{
//do stuff;
}
}
};
int main()
{
QApplication app(argc, argv);
A * a = new A();
a->run();
return app.exec
}
次に、プログラムは一種のサーバーであるため、彼をループさせ、新しいクライアントを待ちます...
しかし、スロットが呼び出されることはありません。プログラムが常にループしており、シグナルが発行されたかどうかを確認していないためではないかと考えています。
手伝ってくれませんか