我正在学习 Qt,并且正在从 Qt wiki 阅读有关线程、事件和 QObjects 的信息,并遵循了有关如何在一段时间内处理某些工作的 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
}
}
}
这是一个非常简单的问题,但我认为它说明了我的情况。为什么这不起作用以及我必须处理这种情况的其他替代方法?谢谢.s
编辑: processMessages 每秒被调用一次,但我没有从事件中得到任何输出