내 응용 프로그램에서는 두 가지보기 중 하나가 어셈블리 트리를 표시하는 QTreeView입니다. 어셈블리에는 자식으로 다른 어셈블리와 파트가있을 수 있습니다. 다른보기는 QTableView의 파트 목록입니다.QtreeView와 QTableView를 연결하는 Qt
내가하려고하는 것은 어셈블리 트리에서 파트가 선택되지 않았을 때 (부품에 하위가 없음) 부품이 tableview에서 강조 표시되기를 바랍니다.
이것은 내가 지금까지 가지고있는 것입니다 ... TreeView에 대한 클릭 핸들러에서 ItemModel을 얻은 다음 부품 번호를 얻습니다. 적절한 하나가 발견 될 때까지 부품의리스트를 단지 반복 기능을
QAbstractItemModel *model = asmview->model();
QString partno = model-> index(index.row(), 0, index.parent()).data(Qt::DisplayRole).toString();
bool hasch = model->hasChildren(index);
if (hasch){
qDebug() << "has children" ;
} else {
qDebug() << "has no children" ;
// go find the partnumber in the other grid
int idx;
idx = partsview->getItemNoForPartNo(partno);
다음 인덱스 반환 -1을 발견하지 않으면.
여기가 내가 붙어 있습니다. 아직 컴파일 오류없이 파트 테이블보기의 현재 색인/선택을 설정하는 방법을 찾지 못했습니다. 예를 들어 컴파일하지 마십시오.
if (idx >= 0){
// partsview->setCurrentIndex(idx);
partsview->selectionModel()->setCurrentIndex(idx);
어떻게해야합니까?
'QItemSelectionModel :: select()'함수를 대신 사용해 보시겠습니까? 보기 항목을 선택/선택 취소합니다. – vahancho
@vahancho 나는 그걸 다시 한 번 살펴볼 것입니다. 시도해 보았습니다. 그러나 QModelIndex를 정수로 생성하는 데 어려움을 겪고있었습니다. (Qt를 처음 사용한다고 말할 수 있습니까?) –
임의의 정수로부터 모델 인덱스를 만들 수 없습니다. 행과 열 번호를 알고있는 경우에만 그렇게 할 수 있습니다. 이 경우 QAbstractItemModel :: index() 함수를 사용해야합니다. – vahancho