我有一个包含简单和复杂数据的模型,我想就地使用窗口小部件来编辑简单数据,但是要使用模态对话框来编辑复杂数据...如何以一种简洁的方式实现这一目标?
(我真的更喜欢通过QItemDelegate的子类来做所有事情,并且没有查看特定的技巧)

最佳答案

我认为您必须继承 View 的子类并覆盖QAbstractItemView::edit()函数以处理不同的编辑路径。例如:

class MyView : public QTreeView
{
    [..]
protected:
    bool edit(const QModelIndex &index, EditTrigger trigger, QEvent *event)
    {
        if (index.row() > 5) { // Use your own criteria for simple/complex data
            // Simple data with default editor.
            return QTreeView::edit(index, trigger, event);
        } else {
            // Edit complex data.
            QDialog dialog;
            dialog.exec();
            return false;
        }
    }
    [..]
};

10-04 21:24
查看更多