禁用QStandardItem时自动更新选择

时间:2016-06-30 08:44:53

标签: qt qabstractitemmodel qstandarditemmodel

我使用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)

由于

1 个答案:

答案 0 :(得分:0)

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

如何连接信号

$(document).ready(function () {

    $('.secmenu').hover(function () {

        $('.sample').css('opacity', '0');

    });
    $('.secmenu').mouseleave(function () {
        $('.sample').css('opacity', '1');
    });
});

使用一些帮助代码,如

void QStandardItemModel:itemChanged(QStandardItem * item)

<击> 有关void fixSelection(QStandardItem * item) { if (item.isEnabled()) { // remove item from selection model of view... } }

的一些信息,另请参阅here

如果数据被修改,您也可以考虑清除模型的整个选择。这将为您节省额外的工作量。我不知道哪个动作可能会禁用某些正在选择的项目以及哪些后续操作想要对之前选择的项目进行处理。