在使用 QAction *addAction();函数时出现 argument void(MainWindow:: *)() to const char * 我的函数原型是
ui->mainToolBar->addAction(tr("切换选择"), this, &MainWindow::toggleSelection);
查看对应的重载函数的原型是
QAction *addAction(const QString &text, const QObject *receiver, const char* member);
报出上述错误的原因是
&MainWindow::toggleSelection是PointerToMemberFunction类型的,槽函数SLOT()才是const char * 类型的,所以会报错。
因为在Qt5中 我们习惯用信号和槽的新语法
如果我们将一个QSlider对象的valueChanged信号链接到一个QSpinBox对象的setValue槽,使用传统方式:
connect(slider, SIGNAL(valueChanged(int)), spinbox, SLOT(setValue(int)));
而使用新式语法,这个样子:
connect(slider, &QSlider::valueChanged, spinbox, &QSpinBox::setValue);
所以把上述函数改成
ui->mainToolBar->addAction(tr("切换选择"), this, SLOT(toggleSelection()));
就可以了