单击后,连接到该按钮的功能将被调用两次

时间:2015-12-22 12:37:48

标签: qt qt5 qt-signals

插槽和信号有问题。我创建了按钮并将它们连接到clicked()插槽。然后我决定手动连接信号和插槽,从那时我点击按钮就会调用它的功能两次。

connect(ui->okButton, SIGNAL(clicked()), this, SLOT(on_okButton_clicked()));

void settingswindow::on_okButton_clicked()
{
    qDebug() << "ok clicked";
    this->close();
}

我在Google上寻找答案,但我发现的只有:Where is the generated code of qt signals slots editor但我的* .ui文件如下所示:pastebin to the code。正如你所看到的那样只有一条线而已。我找不到保存信号和插槽信息的位置。重建和清理选项无济于事。

1 个答案:

答案 0 :(得分:2)

这不是Qt中的错误。如果您查看ui_*.h文件的生成代码,您会注意到setupUi()函数中执行的最后一条语句是对QMetaObject::connectSlotsByName()的调用。

由于您的插槽已符合此功能所需的命名约定,因此您的插槽会自动连接到信号。

通过手动将信号连接到插槽,在settingswindow课程中,您可以有效地复制连接。

正如@Devopia所提到的,这是一个记录在案的功能。