【问题标题】:QObject::connect timer with update() functionQObject::connect timer with update() 函数
【发布时间】: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();
}

【问题讨论】:

标签: c++ qt-creator connect qobject


【解决方案1】:

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

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

【讨论】:

  • 问题是计时器和更新不是类的一部分。在创建适当的类后,这两个问题都消失了。
猜你喜欢
  • 2015-03-13
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多