我有一些Qt 4函数的C ++代码:
QColorDialog colordialog0(&window0);
colordialog0.show();
QPixmap pixmap0(10, 10);
QObject::connect(&colordialog0, SIGNAL(colorSelected(const QColor &)), &pixmap0, SLOT(fill(const QColor &)));
当我构建项目时,它编译时出错:
error C2665: 'QObject::connect' : none of the 3 overloads could convert all the argument types
\qt\include\qtcore\../../src/corelib/kernel/qobject.h(204): could be 'bool QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)'
\qt\include\qtcore\../../src/corelib/kernel/qobject.h(217): or 'bool QObject::connect(const QObject *,const QMetaMethod &,const QObject *,const QMetaMethod &,Qt::ConnectionType)'
\qt\include\qtcore\../../src/corelib/kernel/qobject.h(231): or 'bool QObject::connect(const QObject *,const char *,const char *,Qt::ConnectionType) const'
while trying to match the argument list '(QColorDialog *, const char *, QPixmap *, const char *)'
我无法理解这一点,因为当我编译另一个代码(没有Q_OBJECT,moc文件和其他代码)时:
QFileDialog filedialog0;
filedialog0.show();
QLabel label0(¢ralwidget0);
QObject::connect(&filedialog0, SIGNAL(fileSelected(const QString &)), &label0, SLOT(setText(const QString &)));
这不是错误。我知道原因在于重载功能。那么,如何只用一个函数编译(VS2008)?
感谢。
P.S。抱歉我的英文。
答案 0 :(得分:1)
QPixmap没有fill()插槽。
你可以做一个包装并制作自己的插槽。或者找一个更好的课程,你想做什么。