如果您使用重载方法,则可以使用静态 QTimer 单次功能,该方法采用 Functor(函数对象)。这将允许您捕获所需的变量;哪个电机、速度、动作等。如果您不熟悉 Functor,可以在此处阅读有关它们的信息。
或者,由于该问题没有提供代码示例,我们假设您已经编写了用于启动和停止电机的函数。对于更直接的方法,使用 C++11,您可以执行以下操作:
StartMotor(1);
// Stop in 20 seconds
QTimer* p1 = new QTimer;
connect(p1, &QTimer::timeout, [=]{
StopMotor(1);
p1->deleteLater(); // clean up
});
p1->start(1000 * 20); // trigger in 20 seconds
// After 10 seconds, start motor 2
QTimer* p2 = new QTimer;
connect(p2, &QTimer::timeout, [=]{
StartMotor(2);
// And Stop Motor 1
StopMotor(1);
p2->deleteLater(); // clean up
});
p2->start(1000 * 10); // trigger in 10 seconds
...对于每个定时动作,依此类推。