내 QTableView의 셀에 컨텍스트 메뉴가 필요합니다. 그래서 처음 연결되었습니다.Qt/C++ : QTableView 컨텍스트 메뉴 및 정보 전달
connect(ui->tblTimesheet,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(sheetContextMenu(const QPoint &)));
그리고 그 연결을위한 슬롯은 아래와 같습니다 :
void wndMyWindow::sheetContextMenu(const QPoint &pos){
QMenu *menu = new QMenu;
QModelIndex cell = ui->tblTimesheet->indexAt(pos);
// Make sure the right click occured on a cell!
if(cell.isValid()){
QString myid=cell.sibling(cell.row(),0).data().toString();
menu->addAction("Remove item", this, SLOT(sheetRemoveItem()));
menu->exec(ui->tblTimesheet->mapToGlobal(pos));
}
}
그러면 메뉴가 생성되고 해당 동작을 클릭 할 때 함수를 호출하는 메뉴. 그러나 변수 myid를 두 번째 슬롯으로 전달하려고합니다. 그 슬롯은 아래에 열거되어 있습니다 :
void wndMyWindow::sheetRemoveItem(){
qDebug("Sure I'm here, but what info do I have?");
return;
}
저는 어떻게하는지 잘 모릅니다, 아무도 도와 줄 수 있습니까?
그래, 주변을 둘러 본 것이 많을수록 특정 위젯에 대해 몇 가지 작업을 수행 할 수있는 컨텍스트 메뉴의 전체 지점이 아니기 때문에 가능한 바보 같은 것처럼 보입니다. 전역 작업을 원한다면 일반 메뉴 나 다른 유형의 인터페이스 위젯을 사용할 것입니다! 내가 쓴 것은 내 폼에 private 멤버를주는 것입니다. QModelIndex lastCellRightClicked; void wndMyWindow :: sheetContextMenu (const QPoint & pos) 슬롯에 설정 한 다음 void wndMyWindow :: sheetRemoveItem() 슬롯에 사용합니다. Good Enough ™. – Joseph
특정 메뉴 항목에 대해 특정 작업을 구현하기를 원한다면 항목의 QAction에 첨부하십시오. –