void view_Ftcy_Test::Ui_Close()
{
connect(ui->pb_close_test, &QPushButton::clicked, this, [this]()
{
m_CtrProtocol.End_Test();
QTimer::singleShot(0, this, [this]()
{
ctrl_Sp_Manager::Get_Inst().Close_Sp();
this->close();
});
});
}
QTimer::singleShot
是 Qt 框架中的一个非阻塞定时器函数,它允许你在一个指定的延迟之后执行一个特定的操作。与 QTimer
的其它方法不同,singleShot
不会持续重复触发,而是仅仅在经过设定的延迟时间后触发一次指定的动作。
QTimer::singleShot(int msec, QObject *obj, const QObject::Slot &slot)
函数的参数说明如下:
msec
: 延迟时间,以毫秒为单位。obj
: 接收信号的对象,通常是指向你想要连接槽的类的实例的指针。slot
: 将要被调用的槽函数,可以是一个直接的函数指针或者一个lambda表达式。
使用 QTimer::singleShot
的典型场景包括:
- 在用户界面中创建一个短暂的延迟,例如,在显示一个消息框之后自动关闭它。
- 将多个操作分离开来,以确保它们按顺序执行,即使前一个操作可能需要一些异步处理时间。
- 避免长时间运行的操作阻塞用户界面,通过在操作完成后发布一个单次定时器来更新用户界面。