我有一个声明在上面的函数:

double image_function(double SUM, double AVR, double &Value)

我已经读过SIGNALS和SLOTS必须具有相同的参数,当在我的函数中应用计时器时,如何调整该条件,如下所示:
connect(timer, SIGNAL(timeout()), this, SLOT(image_function()));
timer->start(0);

最佳答案

那不可能您的函数需要3个参数,您必须给它们。计时器如何知道有关函数参数的信息?

为计时器的超时创建一个插槽功能(不带任何参数)。从那里调用带有所需参数的image_function

假设您的类(class)是主窗口。您需要为QTimer的超时信号声明插槽:

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    ...

private slots:
    void timer_image_function();

};

然后在.cpp中,在某个地方创建一个QTimer并将其信号连接到这个新插槽:
connect(timer, SIGNAL(timeout()), this, SLOT(timer_image_function()));
timer->start(0);

当然,您需要实现slot函数,该函数实际上调用image_function:
void MainWindow::timer_image_function()
{
    double result = image_function(SUM, AVR, Value);
}

关于c++ - 使用Qt将功能链接到计时器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17784409/

10-13 07:09
查看更多