2014-06-05 2 views
1

내 의도는 셀 내용을 클립 보드에 복사하는 컨텍스트 메뉴를 만드는 것입니다. 보낸 사람()의 도움으로 두 개의 다른 QTableWidget에 동일한 기능을 연결할 수 있습니다.QMenu에서 기능을 읽을 수 없습니다. Slot

: 모든이 오류 메시지를 제외하고 작동 "QObject를이 : 연결 : 호환되지 않는 송신자/수신자 인수 QAction :: 트리거 (부울) -> MainWindow를 :: copyToClipboard (QTableWidget *, INT, INT)"

이것은 내가 시간에 대한 공식 문서에서 찾아 봤는데 오류

void MainWindow::ProvideContextMenu(const QPoint& pos) // this is a slot 
{ 
    QTableWidget *tw = (QTableWidget *)sender(); 
    int row = tw->currentRow(); 
    int col = tw->currentColumn(); 
    QMenu menu; 
      menu.addAction(QString("Test Item"), this, 
        SLOT(copyToClipboard(QTableWidget *, int,int))); 
      menu.exec(tw->mapToGlobal(pos)); 
} 

void MainWindow::copyToClipboard(QTableWidget *tw, int row, int col) { 
    clipboard = QApplication::clipboard(); 
    clipboard->setText(tw->item(row, col)->text()); 
} 

을 생성하지만 이것에 대해 아무것도 발견 코드의 일부이다. 해결책이 있습니까? documentation 가입일

답변

1

:

신호 슬롯기구 안전 유형 : 신호의 서명은 수용 슬롯의 서명과 일치한다. (실제로 슬롯은 추가 인수를 무시할 수 있기 때문에 수신하는 신호보다 짧은 서명을 가질 수 있습니다.) 서명이 호환 가능하므로 컴파일러는 함수 포인터 기반 구문을 사용할 때 형식 불일치를 감지하는 데 도움이 될 수 있습니다. 문자열 기반 SIGNAL 및 SLOT 구문은 런타임에 유형 불일치를 감지합니다.

menu.addAction(QString("Test Item"), this, 
       SLOT(copyToClipboard(QTableWidget *, int,int))); 

당신은 그런 일치하지 않는 신호 슬롯 매개 변수를 가질 수 없습니다 :

은 culsprit입니다. 매개 변수가 없거나 하나의 부울이있는 슬롯 만 트리거 된 (bool) 신호에 연결할 수 있습니다. 디자인을 재고해야합니다.