私はQtを学んでいて、Qt wikiからスレッド、イベント、QObjectについて読んでいて、しばらくの間作業を処理する方法についてwikiの推奨事項に従いましたが、特定のケースでは機能しませんでした。これが私が現在達成しようとしていることの簡単な例です。
class FooEvents : public FooWrapper {
public virtual serverTime(..) { std::cout << "Server time event\n"; }
public virtual connected(..) { std::cout << "Connected event\n"; }
}
class Foo : public QObject {
private:
FooAPI *client;
public:
Foo(FooEvents *ev, QObject *parent = 0) : client(new FooApi(ev)) { .. }
private slots:
void processMessages() {
if (state is IDLE)
reqFooAPiServerTime();
select(client->fd()+1, ...);
if (socket is ready for read)
client.onReceive();
}
public:
void connect(...) {
if (connection) {
QObject::connect(&timer, SIGNAL(timeout()), this, SLOT(processMessages()));
timer.start(1000); // I don't get the output from FooEvents
}
}
}
これは非常に単純ですが、私の場合を示していると思います。なぜこれが機能しないのですか?また、このケースを処理するために他にどのような代替手段が必要ですか?ありがとう。
編集:processMessagesは毎秒呼び出されていますが、イベントから出力が得られません