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,那永远不会发生,而且您会在编译时遇到错误。您应该更喜欢使用它。