我有一个包含简单和复杂数据的模型,我想就地使用窗口小部件来编辑简单数据,但是要使用模态对话框来编辑复杂数据...如何以一种简洁的方式实现这一目标?
(我真的更喜欢通过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;
}
}
[..]
};