QT4 Qtableview禁用行选择

rok*_*oko 3 qt qt4

我正在使用qtableview-s来显示sqlite表中的一些数据.我有两个基本相同的表格视图.他们都在行中显示公交车站(同一型号).在第一个表格中,我选择离开,我想要实现的是在第二个表格中,所选条目之前的所有条目都是不可选择的,这样用户就无法向后移动来选择它们.我能够使用setRowHidden(row,true)隐藏它们,但我仍希望看到它们但无法选择它们.

我尝试使用标志Qt :: ItemFlags(在自定义模型中使用flags方法)但是无论我使用什么行仍然可以选择.有没有人知道如何禁用QTableView中的行,以便仍然显示但不可选择.

rok*_*oko 5

感谢您的提示/帮助,但同时我找到了解决方案(我的代码中的错误).这是我的自定义模型中的错误.我正在为物品返回错误的旗帜.对于其他可能尝试做类似事情的人.您必须在自定义模型(QSQLQueryModel派生)中实现flags方法,并为您不想选择的项返回标志Qt :: NoItemFlags.我正在返回QAbstractItemModel :: flags(索引)但是已经设置了一些默认标志.

Qt::ItemFlags busStopsTableModel::flags(const QModelIndex &index) const
 {
    if(index.row()>lastDisableRowID){

        return QAbstractItemModel::flags(index)|Qt::ItemIsSelectable;
    }
    else
    {
        return Qt::NoItemFlags;
    }

 }
Run Code Online (Sandbox Code Playgroud)