我有QTableView自定义表模型。用户可以选择表中的行,并且在特定情况下我想阻止当前选择的更改。QTableView - 如何防止选择更改
重新选择之前选择的行不是一个理想的解决方案(有关更改的信号被命中)。
那么easies解决方案是什么?
有没有我看不到的选项?
我需要继承QTableView吗?
我有QTableView自定义表模型。用户可以选择表中的行,并且在特定情况下我想阻止当前选择的更改。QTableView - 如何防止选择更改
重新选择之前选择的行不是一个理想的解决方案(有关更改的信号被命中)。
那么easies解决方案是什么?
有没有我看不到的选项?
我需要继承QTableView吗?
你可以用QAbstractItemView::setSelectionMode(QAbstractItemView::NoSelection)
不能选择一个视图,您可以在每个项目的基础上做到这一点,使用Qt :: ItemIsSelectable
Qt::ItemFlags QAbstractItemModel::flags(const QModelIndex & index) const [virtual]
编辑(评论):
你有一个自定义模型,所以你可以设置一个当前行成员变量。然后,覆盖标志:
Qt::ItemFlags YourModel::flags(const QModelIndex & index) const
{
if(_current_row > 0 && index.row() != _current_row)
{
return QAbstractItemModel::flags() | ^Qt::ItemIsSelectable;
}
else
{
return QAbstractItemModel::flags() | Qt::ItemIsSelectable;
}
}
当然,dindt试过,但你明白了。
更新所以,如果你设置到CURRENT_ROW -1,都是可选择的
您可以重新选择之前选定的行。在信号处理程序中,在重新选择前调用blocksignals(true),然后调用blocksignals(false)以再次发送信号。
但是选择改变的信号已经被第一次改变触发了(不是为了reseled而已) – Trompa
你有没有找到你满意的解决方案? –