QTableView類中實時刷新和固定選中的矛盾(即刷新後不清除選中標記)的解決方法

在非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)中的代碼行,即可實現功能,解決實時刷新和固定選中的矛盾(即刷新後不清除選中標記)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章