我知道我想要达到的目标是可能的,因为我可以用lambda表达式来实现它,而且我已经做过了(几个月前我只是不记得语法)。基本上,我希望将一个函数连接到计时器/按钮/等等,以方便事件的工作。
这是我的工作代码:
connect( &renderTimer, &QTimer::timeout, [ = ]() {
onTimerUpdate();
} );它使用lambda连接到插槽。我只想引用函数本身,而不是使用lambda表达式。我尝试过插入onTimerUpdate()和&onTimerUpdate方法,但这些方法都不起作用。我不想使用QObject或其中任何一个预先生成的废话--我也不想在类中定义插槽。很简单,我想把它直接连接到我的函数上。
发布于 2014-11-14 19:37:12
这是连接到成员函数时的格式:
QObject::connect(&renderTimer, &QTimer::timeout, this, &ArclightGLWidget::onTimerUpdate); 这是连接到空闲函数(lambda相同)时的格式。
QObject::connect(&renderTimer, &QTimer::timeout, onTimerUpdate); 这是连接到静态成员函数时的格式:
QObject::connect(&renderTimer, &QTimer::timeout, SomeType::onTimerUpdate); 发布于 2014-11-14 19:47:33
这个调用大概是在onTimerUpdate是一个方法的类中进行的。如果是这样,你可以打电话:
connect(&renderTimer, &QTimer::timeout, this, &foo::onTimerUpdate); 这比lambda更好,因为Qt将管理连接,您还可以在sender()中调用slot。
但是,如果您在onTimerUpdate是一个方法的类中,您也可以使用lambda,就像您在这个问题中所做的那样:
connect( &renderTimer, &QTimer::timeout, [=](){onTimerUpdate();} );https://stackoverflow.com/questions/26937517
复制相似问题