当QStandardItem被禁用时,自动更新选择



我使用Qt 5.6和QStandardItemModel填充QStandardItem来显示数据表。

有些项是启用的,有些是不启用的。

只能选择启用的项(这是正常行为)。

但是当数据更新时,一些项目的启用状态可能会改变,这就是我的问题的根源。考虑以下场景:

1 an item is enabled
2 the user select it
3 the item is selected
4 the data are updated, the item is now disabled
5 the item remain selected, despite it is disabled

现在,用户可以与禁用的项目进行交互:打开上下文菜单,编辑它…

它有一些"更新"方法在Qt模型/视图框架,我可以调用更新选定的状态后,一个标志的变化?

或者是否有任何简单的(通用的)方法来解决这个问题,对于我所有的项目视图?(不是所有的都是表,不是所有的都基于QStandardItem)

谢谢

EDIT:这似乎不起作用,因为启用的属性不是数据,而是一个标志,编辑它不应该触发命名信号。挂在!

如何连接信号

void QStandardItemModel:itemChanged(QStandardItem * item)

加上一些像

这样的辅助代码
void fixSelection(QStandardItem * item)
{
    if (item.isEnabled()) {
        // remove item from selection model of view...
    }
}
罢工

有关QItemSelectionModel的一些信息,请参阅此处。

如果数据被修改,您也可以考虑清除模型的整个选择。这将为您节省额外的工作量。我不知道哪个操作可能会禁用选择项下的某些项,以及哪个后续操作希望在先前采取的选择上工作。

相关内容

  • 没有找到相关文章

最新更新