繁体   English   中英

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();
}

执行此代码时,只会得到“创建计时器”的信息。 永远不要“测试”。

有什么建议么?

您正在连接到SLOT(update()) ,但您的函数称为timerUpdate

使用更现代的Qt 5信号插槽连接语法 ,这将永远不会发生,并且在编译时会出错。 您应该更喜欢使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM