0

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(&centralwidget0);
QObject::connect(&filedialog0, SIGNAL(fileSelected(const QString &)), &label0, SLOT(setText(const QString &)));

エラーではありません。その理由がオーバーロードされた関数にあることは知っています。では、関数を 1 つだけ使用して (VS2008) をコンパイルするにはどうすればよいでしょうか。

ありがとう。

PS私の英語でごめんなさい。

4

1 に答える 1