我正在试着让QTimer运行,但它从不触发。我发现了一些关于计时器的其他问题,但问题总是在于计时器超出了范围。在我的小例子中,情况并非如此:
我在自定义的QMainWindow中创建计时器,这是.h文件:
#include <iostream>
#include <QtWidgets/QMainWindow>
#include <QTimer>
class MyMainWindow : public QMainWindow {
Q_OBJECT;
private:
QTimer *mainTimer;
public slots:
void timerUpdate();
public:
MyMainWindow();
};这是.cpp文件:
#include "MyMainWindow.h"
MyMainWindow::MyMainWindow() {
QMainWindow();
mainTimer = new QTimer(this);
connect(mainTimer, SIGNAL(timeout()), this, SLOT(update()));
mainTimer->start(1000);
std::cout << "Timer created.\n";
}
void MyMainWindow::timerUpdate() {
std::cout << "test";
}最后,这是我的main.cpp:
#include <QtWidgets/QApplication>
#include "MyMainWindow.h"
int main(int argc, char* argv[]) {
QApplication app(argc, argv);
MyMainWindow mmw;
mmw.show();
return app.exec();
}当我执行这段代码时,我只会得到“创建计时器”。也从不“测试”。
有什么建议吗?
发布于 2015-12-10 22:45:31
您正在连接到SLOT(update()),但您的函数名为timerUpdate。
如果使用更现代的Qt 5信号槽连接语法,就不会发生这种情况,而且在编译时会出现错误。你应该更喜欢用这个。
https://stackoverflow.com/questions/34213079
复制相似问题