首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTimer不会触发

QTimer不会触发
EN

Stack Overflow用户
提问于 2015-12-10 22:43:19
回答 1查看 781关注 0票数 0

我正在试着让QTimer运行,但它从不触发。我发现了一些关于计时器的其他问题,但问题总是在于计时器超出了范围。在我的小例子中,情况并非如此:

我在自定义的QMainWindow中创建计时器,这是.h文件:

代码语言:javascript
复制
#include <iostream>
#include <QtWidgets/QMainWindow>
#include <QTimer>

class MyMainWindow : public QMainWindow {
    Q_OBJECT;

private:
    QTimer *mainTimer;

public slots:
    void timerUpdate();

public:
    MyMainWindow();
};

这是.cpp文件:

代码语言:javascript
复制
#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:

代码语言:javascript
复制
#include <QtWidgets/QApplication>
#include "MyMainWindow.h"

int main(int argc, char* argv[]) {
    QApplication app(argc, argv);

    MyMainWindow mmw;
    mmw.show();

    return app.exec();
}

当我执行这段代码时,我只会得到“创建计时器”。也从不“测试”。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-10 22:45:31

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

如果使用更现代的Qt 5信号槽连接语法,就不会发生这种情况,而且在编译时会出现错误。你应该更喜欢用这个。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34213079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档