1

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

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

我已经读过 SIGNALS 和 SLOTS 必须具有相同的参数,当将计时器应用于我的函数时,如何调整该条件如下:

connect(timer, SIGNAL(timeout()), this, SLOT(image_function()));
timer->start(0);    
4

1 回答 1

4

那是不可能的。你的函数需要 3 个参数,你必须给它们。计时器怎么会知道你函数的参数?

为计时器的超时创建一个槽函数(不带任何参数)。从那里调用image_function你想要的参数。

假设您的课程是一个主窗口。您需要为 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);
}
于 2013-07-22T09:56:21.443 回答