按钮组上的 Qt 信号未连接

Qt signal on buttongroup not connected

本文关键字:信号 连接 Qt 按钮      更新时间:2023-10-16

>我有一个用两个单选按钮定义的按钮组

buttonGroupFFTDimension = new QButtonGroup(this);
buttonGroupFFTDimension->addButton(ui->radioButton1D, 1);
buttonGroupFFTDimension->addButton(ui->radioButton2D, 2);
buttonGroupFFTDimension->setExclusive(true);
ui->radioButton1D->setChecked(true);

连接还会编译

connect(this->buttonGroupFFTDimension, static_cast<void(QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked),
this, &MainWindow::on_buttonGroupFFTDimension_buttonClicked);

但它在运行时抛出并出错

QMetaObject::connectSlotsByName: No matching signal for on_buttonGroupFFTDimension_buttonClicked(int)

我承认我不熟悉新的连接语法,但也看不到明显的错误。怎么了?

显示的消息是因为您使用的是Qt Designer,并且它使用connectSlotsByName方法来连接各种元素,它可以识别格式on_somesender_somesignal,并且在您的情况下与您的插槽匹配。

  • 第一个解决方案:无需使用connect功能,这将自动执行此操作。另外,我认为插槽没有所需的int类型作为参数。

在您的情况下,插槽应如下所示:

private  slots:
void on_buttonGroupFFTDimension_buttonClicked (int val);
  • 另一种可能的解决方案是重命名插槽,然后运行make cleanqmake.