【问题标题】:Qt signal on buttongroup not connected按钮组上的 Qt 信号未连接
【发布时间】:2017-07-14 14:11:21
【问题描述】:

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

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)

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

【问题讨论】:

  • 您可以展示如何定义插槽:on_buttonGroupFFTDimension_buttonClicked
  • 显示的消息是因为您正在使用Qt Designer,它使用connectSlotsByName 方法连接各种元素,它识别格式on_somesender_somesignal,并且在您的情况下匹配您的插槽,请尝试更改插槽名称,运行make clean,然后运行qmake

标签: c++ qt qt5 qt-signals qt-slot


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2015-03-14
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 2018-09-07
    相关资源
    最近更新 更多