2013-06-10 2 views
0

나는 Qt는 4 기능을 일부 C++ 코드가 : 내가 프로젝트를 빌드 할 때Qt는 신호 -> 슬롯 mechanizm

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 &))); 

오류가 아닙니다. 나는 그 이유가 오버로드 된 함수에 있다는 것을 알고있다. 그럼, 어떻게 하나의 func만으로 (VS2008) 컴파일 할 수 있습니까?

감사합니다.

P. 미안해, 내 영어로.

답변

1

QPixmap에는 fill() 슬롯이 없습니다.

래퍼를 사용하여 나만의 슬롯을 만들 수 있습니다. 또는 원하는 것을 더 나은 수업을 찾으십시오.

+1

또한 QPixmap은 QObject가 아니므로 슬롯을 사용할 수 없습니다. –

+0

확인 : (답장을 보내 주셔서 감사합니다. – Skroopa