如何在没有QT应用程序的情况下使用QTimer

时间:2013-12-13 08:32:06

标签: c++ qt timer

我想在常规课程中使用QTimer(没有QT应用程序,但是来自QTimer)。但是当我尝试这个时:

部首:

#include <qtimer.h>
QTimer* m_timer;
public slots:
    void UpdateClock();

来源:

    m_timer = new QTimer(this);
    QObject::connect(m_timer, SIGNAL(timeout()), this, SLOT(UpdateClock()));
    m_timer->start(1000);

void MyClass::UpdateClock()
{
    int i = 0;
}

计时器永远不会跳转到UpdateClock方法!你知道为什么以及如何解决这个问题吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

QTimer依赖于QCoreApplication。如果您没有启动QCoreApplication,则不会激活QTimer。 (QApplication继承QCoreApplication并且通常使用。)

答案 1 :(得分:3)

如果你想在Qt中使用信号和插槽,你需要一个事件循环来处理信号并发送它们。

通常,在main.cpp中你有类似的东西:

int main( int argc, char** argv )
{
    QApplication app(argc, argv);
    ...
    return app.exec(); // the event loop is started and runs here
}

如果不需要GUI,可以使用

QCoreApplication

您还可以使用以下方法创建自己的事件循环:

QEventLoop

http://qt-project.org/doc/qt-4.8/qeventloop.html 并仅处理QTimer事件。但是,您仍然需要创建QApplication。