2016-12-29 1 views
1

나는 사용자 정의 QTableViewQAbstractTableModel을가집니다. 내 QTableView은 필요하지 않으므로 QAbstractTableModel에서 일부 열을 숨 깁니다.QTableView에서 다음 보이는 열로 이동

을 클릭하면 다음 사용 가능한 (편집 가능한) 열을 선택하고 싶습니다. 현재 구현은 QAbstractTableModel에서 다음 색인을 가져 오는 것이지만이 색인에는 숨겨진 열이 포함됩니다. (을 타격 할 때 선택한 "다음"열을보기 전에 그래서 몇 프레스 수 있습니다.)

가 어떻게 이 탭 다음 볼 열로 이동합니다 알 수 있습니까?

언어는 C++입니다. 다음은 내 QTableView 내 코드입니다 : 그것은 우아한 아니다

void keyPressEvent(QKeyEvent* event) 
{ 
    if((event->modifiers() == Qt::KeyboardModifier::NoModifier) && (event->key() == Qt::Key::Key_Tab)) 
    { 
     this->moveToNextCell(); 
    } 
    else 
    { 
     this->QTableView::keyPressEvent(event); 
    } 
} 

void moveToNextCell() 
{ 
    const QModelIndex index = this->currentIndex(); 
    int nextColumn = index.column() + 1; 

    if(index.column() <= lastEditableCol) 
    {  
     this->setCurrentIndex(model->index(index.row(), nextColumn)); 
    } 
} 

답변

0

은,하지만 난 QTableView에서 isColumnHidden()를 사용하여 문제를 해결했습니다. 숨겨진 것이 아닌 것을 찾을 때까지 열을 반복합니다.

for(int i = nextColumn; i <= numOfColumns && nextColumn <= numOfColumns; i++) 
{ 
    if(this->isColumnHidden(nextColumn) == true) 
    { 
     nextColumn += 1; 
    } 
    else 
    { 
     i = numOfCol + 1; 
    } 
} 
+0

void QHeaderView :: setSectionsMovable (bool movable) –