QTreeView:如果没有输入任何内容,请不要更新索引

问题描述 投票:-1回答:1

在QTreeView中,如果用户正在编辑previousIndex并且点击TAB,则为currentIndex打开编辑器,默认行为是打开一个空白的textedit,这样如果用户再次立即点击TAB,则光标移动到nextIndex并且模型接收到setData(currentIndex) ,QVariant())以空QVariant作为数据。

是否可以改变这种行为,以便通过点击TAB,用户打开一个编辑器但是现有的数据仍然存在,以便用户需要明确删除它?

我想我可以通过使用来实现这一目标

void QAbstractItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const

但我不知道在哪里拨打电话。

c++ qt qt5 qtreeview
1个回答
1
投票

我正在与类似的问题作斗争,在qtreeview中编辑单元格正在清除单元格,而不是突出显示当前文本。

我在试图找到答案时找到了你的问题,所以也许我的经验会很有用。

我的问题出在我的model :: data()方法中。

我有一个提前退出测试:

if (role != Qt::DisplayRole) 
    return QVariant();

这是按设计工作 - 一进入编辑模式,它就返回一个空值。

我将EditRole添加到测试中并且它正常工作。

if (role != Qt::DisplayRole && role != Qt::EditRole) 
    return QVariant();
© www.soinside.com 2019 - 2024. All rights reserved.