public slots:
void onColorSelected(const QColor &color);
void MainWindow::onColorSelected(const QColor &color)
{
qDebug()<<color.rgb();
}
QColorDialog *dia = new QColorDialog(this);
dia->resize(800,600);
dia->setWindowTitle("my color dialog");
dia->setCurrentColor(QColor("red"));
dia->setOptions(QColorDialog::DontUseNativeDialog | QColorDialog::ShowAlphaChannel);
dia->open(this,SLOT(onColorSelected(const QColor &color)));
报错:
QObject::connect: No such slot QMainWindow::onColorSelected(const QColor &color) in
QObject::connect: (receiver name: 'MainWindow')
如何正确的使用QColorDialog的open函数关联槽,这样写会显示关联失败。
按帮助文档的意思此槽与colorSelected(const QColor &color)信号关联,为什么这么写不行,望使用过的告知,感谢。
【以下回答由 GPT 生成】
问题重述: 我想使用QColorDialog的open函数将一个槽与colorSelected(const QColor &color)信号关联起来,但是我无法成功连接。请问如何正确使用QColorDialog的open函数? 为什么我的代码会引发连接失败的错误信息?感谢使用过的人士帮忙解答。
回答如下:
根据报错信息,提示找不到目标槽函数QMainWindow::onColorSelected(const QColor &color)
。这个错误的原因是QMainWindow
没有这个槽函数。
要解决这个问题,你需要做以下几步:
```cpp class MainWindow : public QMainWindow { Q_OBJECT
public slots: void onColorSelected(const QColor &color); }; ```
onColorSelected
的实现中,处理来自QColorDialog
的颜色选择信号。cpp void MainWindow::onColorSelected(const QColor &color) { // 处理颜色选择逻辑 }
cpp dia->open(this, SLOT(onColorSelected(const QColor &color)));
改进后的代码如下:
QColorDialog *dia = new QColorDialog(this);
dia->resize(800,600);
dia->setWindowTitle("my color dialog");
dia->setCurrentColor(QColor("red"));
dia->setOptions(QColorDialog::DontUseNativeDialog | QColorDialog::ShowAlphaChannel);
connect(dia, SIGNAL(colorSelected(const QColor &)), this, SLOT(onColorSelected(const QColor &)));
dia->open();
这样就能正确连接槽函数了。
希望这个解决方案对你有帮助!如果还有其他问题,请随时提问。