按钮组上的 Qt 信号未连接
Qt signal on buttongroup not connected
我有一个用两个单选按钮定义的按钮组
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 设计器,它使用 connectSlotsByName
方法连接各种元素,它识别格式 on_somesender_somesignal
,并且在您的情况下与您的插槽匹配。
- 第一种方案:不用
connect
函数,这个会自动完成。另外我认为插槽没有所需的 int 类型作为参数。
在您的情况下,插槽应如下所示:
private slots:
void on_buttonGroupFFTDimension_buttonClicked (int val);
- 另一个可能的解决方案是重命名插槽,然后 运行
make clean
和 qmake
.
我有一个用两个单选按钮定义的按钮组
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 设计器,它使用 connectSlotsByName
方法连接各种元素,它识别格式 on_somesender_somesignal
,并且在您的情况下与您的插槽匹配。
- 第一种方案:不用
connect
函数,这个会自动完成。另外我认为插槽没有所需的 int 类型作为参数。
在您的情况下,插槽应如下所示:
private slots:
void on_buttonGroupFFTDimension_buttonClicked (int val);
- 另一个可能的解决方案是重命名插槽,然后 运行
make clean
和qmake
.