70B模型单卡装不下?多卡并行推理从入门到上线的完整指南
2026/6/8 22:25:27
在Qt C++中,定周期执行一个函数时,链接的函数不一定必须是槽函数,但具体取决于实现方式。以下是详细分析:
timeout()信号连接到目标对象的槽函数。cpp
// 创建定时器,每1000ms触发timeout信号 QTimer *timer = new QTimer(this); connect(timer, &QTimer::timeout, this, &MyClass::mySlot); // 必须连接到槽函数 timer->start(1000);slots:关键字声明或Q_SLOT宏标记)。cpp
connect(timer, &QTimer::timeout, this, [](){ // 普通函数体,非槽函数 });timerEvent(QTimerEvent *event)事件处理函数。cpp
class MyClass : public QObject { Q_OBJECT public: MyClass() { // 启动定时器,返回定时器ID m_timerId = startTimer(1000); // 每1000ms触发 } protected: void timerEvent(QTimerEvent *event) override { if (event->timerId() == m_timerId) { myFunction(); // 直接调用普通成员函数 } } private: int m_timerId; void myFunction() { /* 普通函数,非槽函数 */ } };timerEvent()中调用普通函数。startTimer()返回的ID)。timerEvent()使用。cpp
class MyClass : public QObject { public: MyClass() { m_timer.start(1000, this); // 启动定时器 } protected: void timerEvent(QTimerEvent *event) override { if (event->timerId() == m_timer.timerId()) { myFunction(); // 调用普通函数 } } private: QBasicTimer m_timer; void myFunction() {} };timerEvent()方式,无需槽函数。timeout()信号连接时,目标函数必须是槽函数(或Lambda/函数指针)。timerEvent()或使用QBasicTimer时,可直接调用普通成员函数。timerEvent()或QBasicTimer。通过以上方式,你可以根据具体需求选择是否使用槽函数。