QObject::connect timer with update() 函数

Posted

技术标签:

【中文标题】QObject::connect timer with update() 函数【英文标题】:QObject::connect timer with update() function 【发布时间】:2016-12-03 16:25:07 【问题描述】:

如何使用QObject::connectvoid update(*p_1, *p_2, *p_3, *p_4, *scene) 函数与timer() 连接起来?

我想要完成的是更新我已将指针传递到的对象并调用*scene->update() 以刷新屏幕内容。

我有一个如下所示的更新函数:

void update(*p_1, *p_2, *p_3, *p_4, *scene)
    // update functions
    scene->update();

我主要有:

int main(int argc, char **argv)
    // creating objects and calculations
    view.show();
    QTimer timer;
    QObject::connect(&timer, SIGNAL(timeout()), update(&o_1, ..., &scene));
    timer.start(1000);
    return a.exec();

【问题讨论】:

这应该是怎么做的:doc.qt.io/qt-5/… 【参考方案1】:

信号和函数的签名不兼容。因为如果那样的话,根据文档,你不能直接连接它们。 无论如何,您可以使用 lambda 来解决它:

QObject::connect(&timer, SIGNAL(timeout()), [&]() update(&o_1, ..., &scene); ); 

【讨论】:

问题是计时器和更新不是类的一部分。在创建适当的类后,这两个问题都消失了。

以上是关于QObject::connect timer with update() 函数的主要内容,如果未能解决你的问题,请参考以下文章

qt qtimer控件用法

错误:'QObject' 是 'SerialPort' QObject::connect(&uartObj, SIGNAL(readDone(QByteArray)), this, SLOT(

QObject::connect: 没有这样的信号(类名)(信号名)(属性)

QObject::connect: 没有这样的信号

C++ - Qt QObject::connect 跨类的 GET 请求使用

包装 QObject::connect 错误