我有自定义QTableView
和QAbstractTableModel
。我的QTableView
隐藏了QAbstractTableModel
中的一些列,因为它们不是必需的。
当我点击 Tab 时,我想选择下一个可用(可编辑)列。我当前的实现是从QAbstractTableModel
获取下一个索引,但是此索引包含隐藏的列。 (因此,当你点击 Tab 时,可能会有几次按下,然后才会看到" next"列被选中。)
如何判断 Tab 跳转到下一个可见列?
语言是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 :(得分:0)
它并不优雅,但我使用isColumnHidden()
中的QTableView
解决了这个问题。我只是遍历列,直到找到一个不被隐藏的列。
for(int i = nextColumn; i <= numOfColumns && nextColumn <= numOfColumns; i++)
{
if(this->isColumnHidden(nextColumn) == true)
{
nextColumn += 1;
}
else
{
i = numOfCol + 1;
}
}