gpt4 book ai didi

c++ - Tab 到 QTableView 中的下一个可见列

转载 作者:太空宇宙 更新时间:2023-11-04 13:07:55 25 4
gpt4 key购买 nike

我有一个自定义的 QTableViewQAbstractTableModel。我的 QTableView 隐藏了 QAbstractTableModel 中的一些列,因为它们不需要。

当我点击 Tab 时,我想选择下一个可用(可编辑)列。我当前的实现是从 QAbstractTableModel 中获取下一个索引,但该索引包含隐藏的列。 (因此,当点击 Tab 时,可能需要按几次才能看到“下一”列被选中。)

如何让 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));
}
}

最佳答案

这并不优雅,但我已经通过使用 QTableView 中的 isColumnHidden() 解决了这个问题。我只是遍历这些列,直到找到一个未隐藏的列。

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

关于c++ - Tab 到 QTableView 中的下一个可见列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41383014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com