我可以使用Qt连续调用功能插槽吗?

时间:2014-04-01 14:34:02

标签: qt visual-c++

我想在GUI中使用C ++和Qt检查对象值。所以为此,我想连续调用该函数,以便我可以检查对象值并发出信号。 有没有办法连续调用功能插槽而不用任何按钮连接?

3 个答案:

答案 0 :(得分:1)

设置计时器?

编辑:我的不好,代码不完全正确。

QTimer t;
connect(&t, SIGNAL(timeout()), SLOT(checkValue()));
t.start(100); // Set interval to whatever you want

答案 1 :(得分:1)

使用QTimer

class MyObject : public QObject{
    Q_OBJECT

    QTimer timer_;

    MyObject(QObject* parent = 0) :QObject(parent), timer_(){
        timer_.setInterval(1000);
        timer_.setSingleShot(false);
        timer_start();
        connect(&t, &QTimer::timeout, this, &MyObject::timerSignal);
    }


  signals:
    void timerSignal(){
        //...
    }
}

答案 2 :(得分:1)

changeValue函数本身发出valueChanged信号,而不是轮询更改,而是通知它,你可能会更好。你不想提醒价值保持不变(通过连续调用Slot),而是你想在价值变化时做点什么。

为这类事添加计时器非常麻烦。