2011-04-18 3 views
0

결과를 표시하는 데 사용하는 프로그램에 QTableWidget이 있는데 사용자가 세로 머리글 중 하나를 한 번 클릭 할 때이를 감지 할 수있게하려고합니다. 이렇게하려면 signal sectionDoubleClicked (int)를 hheaderclicked (int) 함수에 연결하려고합니다. 코드를 컴파일하려고하면 일치하는 함수에 대한 컴파일 시간 오류가 발생합니다. 나는 게시물에서 hereQTableWidget에서 머리글 클릭 감지 C++ qt4

컴파일 에러를 내 코드를 내놓고 오전 :

mainwindow.cpp:138: error: no matching function for call to âMainWindow::connect(QHeaderView*, const char [27], MainWindow* const, const char [21])â 
/usr/lib64/qt4/include/QtCore/qobject.h:181: note: candidates are: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType) 
/usr/lib64/qt4/include/QtCore/qobject.h:282: note:     bool QObject::connect(const QObject*, const char*, const char*, Qt::ConnectionType) const 

내 코드 :

QObject::connect(ui->table_results->horizontalHeader(),SIGNAL(sectionDoubleClicked(int)), 
       this,SLOT(hheaderclicked(int))); 

편집 : 나는 다음을 수행하여 사용하려면 코드를 얻을 수 있었다 :

QObject::connect((QObject*)ui->table_results->verticalHeader(),SIGNAL(sectionClicked(int)),this,SLOT(hheaderclicked(int))); 

왜 내가 QHeaderView *를 Q로 캐스팅해야만하는지 설명 할 수 있습니까? Object *이 기능을 사용하려면 다른 QObject :: connect 호출 중 하나를 형 변환 할 필요가 없습니다. 모두 제대로 작동합니다. 예를 들어이 잘 작동이 사람이 내 다른 하나는 런타임까지 알 수 없습니다 객체에 연결하는 동안 컴파일 타임에 알려진 객체에 연결하기 때문에 그것은

QObject::connect(ui->button_start,SIGNAL(clicked()),this,SLOT(scanstart())); 

입니까?

답변

1

오류 메시지는 세 번째 인수를 다소 홀수 인 MainWindow* const으로 표시합니다. const MainWindow* 인 경우 전화가 작동해야합니다. 호출 함수는 어떻게 선언됩니까?

+0

MainWindow :: MainWindow (QWidget * parent) 구성 도중 연결이 발생합니다. 이게 당신이 요구하는 것입니까? –

+2

수정 사항을 고려하여 # 을 (를) 잊어 버렸을 가능성이 있습니까? – TonyK

+1

당신의 제안에 따라 을 포함 시키려고 시도했지만 프로그램이 QObject *로 캐스팅하지 않고 컴파일됩니다. 감사. –