我想在常规课程中使用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方法!你知道为什么以及如何解决这个问题吗?
谢谢!
答案 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。