QTimer 不触发
QTimer doesn't trigger
我正在尝试获取 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();
}
当我执行这段代码时,我只得到 "Timer created." 而从来没有 "test".
有什么建议吗?
您正在连接到 SLOT(update())
,但您的函数名为 timerUpdate
。
使用更现代的 Qt 5 signal-slot connection syntax,那永远不会发生,而且您会在编译时遇到错误。您应该更喜欢使用它。
我正在尝试获取 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();
}
当我执行这段代码时,我只得到 "Timer created." 而从来没有 "test".
有什么建议吗?
您正在连接到 SLOT(update())
,但您的函数名为 timerUpdate
。
使用更现代的 Qt 5 signal-slot connection syntax,那永远不会发生,而且您会在编译时遇到错误。您应该更喜欢使用它。