Qt信号槽信号函数重载问题 error: C2664: “QMetaObject::Connection const”

发布时间 2023-07-14 17:07:49作者: 小头痛
//    connect(spinFontSize,&QSpinBox::valueChanged,this,&MainWindow::spinFontSize_valueChanged);//由于信号函数存在重载,发送者找不到正确信号函数。
    //改用A.Qt4带形参方式
//    connect(spinFontSize,SIGNAL(valueChanged(int)),this, SLOT(spinFontSize_valueChanged(int)));
    //改用B.QOverload(推荐方式,理由:QT5有语法编译检测,写法较简短)
    /*1.该函数返回一个指向重载函数的指针,其中的模板参数是重载函数参数类型的列表(list)。functionPointer是重载函数(成员函数)的指针:
     * qOverload<T>(functionPointer)//C++14风格
     * 2. QOverload<>::of(&Foo::overloadedFunction)
     *    QOverload<int, QString>::of(&Foo::overloadedFunction)//c++11风格
    */
    connect(spinFontSize,QOverload<int>::of(&QSpinBox::valueChanged),this,&MainWindow::spinFontSize_valueChanged);
    connect(comboFont,qOverload<const QString &>(&QFontComboBox::currentIndexChanged),this,&MainWindow::comboFont_currentIndexChanged);
//    connect(comboFont,QOverload<const QString&>::of(&QFontComboBox::currentIndexChanged),this,&MainWindow::comboFont_currentIndexChanged);

参考: error: C2664: “QMetaObject::Connection const”_Flying Bear的博客-CSDN博客 里面提到了使用qoverload方法,好用,解决了问题。

 Qt qOverload函数介绍_qoverload包括在哪个头文件_尚庆龙的博客-CSDN博客 里面提到了qoverload如何使用