2017-07-14 93 views
0

我有两个单选按钮定义ButtonGroup的Qt的信号没有连接

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) 

我抛出和错误承认我不熟悉新的连接语法,但也没有看到明显的错误。哪里不对?

+2

你可以告诉你如何定义插槽:'on_buttonGroupFFTDimension_buttonClicked' – eyllanesc

+2

所示的信息,是因为你正在使用'Qt的Designer',它使用了'connectSlotsByName'方法来连接各种元素,它识别的格式'on_somesender_somesignal' ,并在你的情况下,匹配你的插槽,尝试改变你的插槽的名称,运行'make clean'然后'qmake'。 – eyllanesc

回答

3

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

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

在你的情况下,时隙就如下:

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

我重命名了插槽,现在它可以工作。 –