2016-02-02 146 views
0

我有一個QMainWindow,其中包含一個QTableView作爲其中心部件。在QTableView中設置焦點

我通過設置模型(它來自QAbstractTableModel)來填充此QTableView

QTableView的選擇行爲設置爲QAbstractItemView::SelectRows。這意味着如果我點擊一個單元格,整個行被選中(並突出顯示)。

我希望能夠以編程方式集中/突出顯示QTableView中的一行。換句話說,我想集中/突出顯示一行,而不需要用戶點擊它。如何做到這一點,我是否在單元格中點擊「假」?

回答

0

您可以通過使用表格視圖的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); 

你可以找到選擇標誌描述here