默認情況下選擇第一行,當我移動選擇最後一行時,我希望所有的行將被選中但不是,它只選擇QTableView的可見行。爲什麼QTableView擴展選擇忽略我的默認選定行?
我有一個QTableView顯示來自數據庫模型的數據。它被配置爲允許擴展選擇(ctrl,shift等)和僅選擇行(不是單元格)。內容正在改變基於其他參數,每當我更新模型,我默認選擇我的QTableView的第一行。
ui->tableView->setModel(model);
ui->tableView->setColumnHidden(UidColumn, true);
ui->tableView->setSelectionMode(QAbstractItemView::ExtendedSelection);
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->tableView->verticalHeader()->hide();
ui->tableView->setAlternatingRowColors(true);
// This is done whenever the content changes
QModelIndex index = model->index(0,0);
ui->tableView->setCurrentIndex(index);
我隱藏垂直標題,因爲沒有顯示在那裏,我隱藏第一列,因爲它與用戶無關。
第一行顯示爲選中,我甚至記錄了焦點的變化,並且tableView->selectionModel()->selectedRows()
總是好的(即返回QModelIndex(0,0)
)。但是當我按住shift鍵並點擊最後一行時,就好像第一行從未被選中。
如果我手動選擇第一行(或任何一行),下一次移位點擊將完美工作。如果我按住ctrl鍵,多重選擇就可以完美運行。這就像我的默認選擇(通過代碼完成)在按住shift鍵的情況下被忽略。