Qt 信号>插槽机制

Qt SIGNAL->SLOTS mechanizm

本文关键字:插槽 机制 gt 信号 Qt      更新时间:2023-10-16

我有一些c++代码与Qt 4函数:

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
    qtincludeqtcore../../src/corelib/kernel/qobject.h(204): could be 'bool QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)'
    qtincludeqtcore../../src/corelib/kernel/qobject.h(217): or       'bool QObject::connect(const QObject *,const QMetaMethod &,const QObject *,const QMetaMethod &,Qt::ConnectionType)'
    qtincludeqtcore../../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(&centralwidget0);
QObject::connect(&filedialog0, SIGNAL(fileSelected(const QString &)), &label0, SLOT(setText(const QString &)));

不是错误。我知道原因在重载函数中。所以,我怎么能编译(VS2008)只有一个函数?

谢谢。

注:对不起,我的英语不好。

QPixmap没有fill()槽。

您可以做一个包装器并创建自己的插槽。或者找一个更适合你的课程