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)中的代码行,即可实现功能,解决实时刷新和固定选中的矛盾(即刷新后不清除选中标记)。

你可能感兴趣的:(QT实战,QTableView,MVC,QT,刷新,选中)