在非MVC機制的編程中使用QTableView類,若需要QTableView顯示的內容實時刷新(如固定週期刷新),往往會導致選中標記也會被清除掉(即刷新之前選中某塊區域,刷新之後就取消了選中),如果希望在刷新過程中保留選中標記,可選用如下方法:
(1) 刷新前保存當前選中的單元格
QModelIndexListselected = tableView->selectionModel()->selectedIndexes();
其中QTableView *tableView= new QTableView(this);
(2) 數據刷新完畢恢復選中標記
if(!selected.isEmpty())
{
foreach(const QModelIndex&index, selected)
{
tableView->selectionModel()->select(index,QItemSelectionModel::Select);
}
}
在刷新數據的代碼前加上(1)中的代碼行,刷新數據的代碼後加上(2)中的代碼行,即可實現功能,解決實時刷新和固定選中的矛盾(即刷新後不清除選中標記)。