我使用 QTableView 和 QAbstractTableModel 的子类作为其模型。 我看到(默认情况下)当用户键入某些内容时,QTableView 开始搜索第一列中键入的文本并将 View 滚动到匹配元素。这是我想要的,但不在第一栏中。 我找不到一种方法来告诉(代码)QTableView 或 QAbstractTableModel 哪个是“搜索列”。 有什么想法吗?
谢谢
最佳答案
QTableView通常在当前具有焦点的列中搜索。只需单击要搜索的列中的单元格并开始输入即可。
[编辑:]
关于您的评论:您可以使用
QTableView* tableView = /* whatever */;
tableView->setCurrentIndex( const QModelIndex& index )
这也将选择单元格。如果你不想这样,你可以这样做
QModelIndex index = /* whatever */;
tableView->selectionModel()->setCurrentIndex( index, QItemSelectionModel::NoUpdate );
如果您有插槽连接到 TableView 的selectionModel()的当前[Row|Column]Changed或selectionChanged信号,您可能需要执行以下操作,具体取决于您的代码:
QTableView* tableView = /* whatever */;
QModelIndex index = /* current row, whatever column you want to search in */;
QItemSelectionModel* selectionModel = tableView->selectionModel();
// probably check for a NULL pointer? - not really sure if this is possible
bool signalsWereBlocked = selectionModel->blockSignals( true );
selectionModel->setCurrentIndex( index );
selectionModel->blockSignals( signalsWereBlocked );
关于QTableView:如何设置搜索列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6840434/