关于buttongroup的Qt信号没有连接

问题描述 投票:1回答:1

我有一个用两个radiobutton定义的buttongroup

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)

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

c++ qt qt5 qt-signals qt-slot
1个回答
4
投票

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

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

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

private  slots:
    void on_buttonGroupFFTDimension_buttonClicked (int val);
  • 另一种可能的解决方案是重命名插槽,然后运行make cleanqmake
© www.soinside.com 2019 - 2024. All rights reserved.