QTimer 的超时信号 void timeout() 本身 - 没有足够的参数来调用 myClass::myMethod(_param1, _param2);(超时究竟应该从哪里获取 _param1 和 _param2 ?)
您可以使用 lambda 函数:
//assuming you have _param1 & _param2 as variables before this point
connect(&timer, &QTimer::timeout, this, [=]() { myMethod(_param1, _param2); });
timer.setSingleShot(true);
timer.start(100);
需要注意的一点是,通过使用this 作为connect() 的接收对象,您可以将连接的生命周期与计时器的生命周期和当前对象 (this) 的生命周期联系起来,这应该确保如果两个对象之一死亡并且在 this 被释放后未执行 lambda(隐式调用 this->myMethod()),则连接将被正确销毁。
或者你可以在你的类中创建一个void myClass::handleTimeout() 函数,将时间的超时连接到它作为槽并那里调用myMethod(_param1, _param2)
void myClass::handleTimeout()
{
//assuming _param1 & _param2 are variables accessible in handleTimeout()
myMethod(_param1, _param2));
}
//Your original function...
void myClass::someFunction()
{
//...
connect(&timer, &QTimer::timeout, this, &myClass::handleTimeout);
timer.setSingleShot(true);
timer.start(100);
//...
}