0

我有一个QMainWindow包含 aQTableView作为它的中心小部件。

QTableView通过设置模型(派生自QAbstractTableModel)来填充它。

的选择行为QTableView设置为 QAbstractItemView::SelectRows。这意味着如果我单击一个单元格,则会选择整行(并突出显示)。

我希望能够以QTableView编程方式聚焦/突出显示一行。换句话说,我想在没有用户点击的情况下聚焦/突出显示一行。如何做到这一点,我是否“伪造”了单元格中的点击?

4

1 回答 1

2

您可以通过使用表视图的QItemSelectionModel来实现这一点,您可以通过调用该QTableView::selectionModel()方法来获得它。QItemSelectionModel 有一个公共槽QItemSelection::select(QModelIndex, QItemSelectionModel::SelectionFlags),它在调用时会改变当前的选择。因此,当您想突出显示特定行时,您可以这样做:

QItemSelectionModel::SelectionFlags flags = QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows;
QModelIndex index = m_tableView->model()->index(rowIndex, 0);
m_tableView->selectionModel()->select(index, flags);

您可以在此处找到选择标志描述。

于 2016-02-02T13:13:59.663 回答