天天看點

Qt同名信号error: no matching member function for call to ‘connect‘解決方法

文章目錄

  • ​​1 錯誤呈現​​
  • ​​2 原因​​
  • ​​3 解決​​

1 錯誤呈現

原始代碼

connect(ui->SpinBox1, &QSpinBox::valueChanged, 
 ui->Slider1, &QSlider::setValue);      
Qt同名信号error: no matching member function for call to ‘connect‘解決方法

2 原因

QSpinBox類中有兩個同名信号,信号和槽函數對接的參數類型不比對

Q_SIGNALS:
    void valueChanged(int);
    void textChanged(const QString &);
#if QT_DEPRECATED_SINCE(5, 14)
    QT_DEPRECATED_X("Use textChanged(QString) instead")
    void valueChanged(const QString &);
#endif      

3 解決

connect(ui->SpinBox1, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), 
ui->Slider1, &QSlider::setValue);      
connect(ui->SpinBox1, SIGNAL(valueChanged(int)), 
ui->Slider1, SLOT(setValue(int)));