Qt를 배우고 있는데 Qt wiki의 Threads, Events 및 QObjects에 대해 읽었으며 while 조건에서 일부 작업을 처리하는 방법에 대한 위키 권장 사항을 따랐지만 특정 케이스. 다음은 현재 달성하고자하는 간단한 예입니다.매초마다 메서드를 실행하는 QTimer
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
}
}
}
이것은 매우 간단하지만 내 경우를 설명한다고 생각합니다. 왜 이것이 효과가 없으며이 대안을 처리해야하는 다른 대안이 있습니까?
편집 Thanks.s : processMessages()가 SLOT
아니기 때문에 processMessages는 매 초마다 호출되고 있지만 이벤트
에 간단한 호출 타이머를 우리는 "이해하지 못하는 구성 할 수있는 당신이 그것을 지정하지 않으면 "작동하지 않습니다! – ScarCode
processMessages()가 이벤트와 어떻게 관련되는지 볼 수 없습니다 (FooEvents?) –
@FrankOsterfeld. 내가 사용하고있는 API의 일부입니다. API가 제공하는 모든 이벤트를 구현해야하며 API 메소드를 호출하면 FooWrapper를 통해 해당 이벤트가 시작됩니다. – sectorzz9