qt c++ 自定义树模型 模型flags 设置为ItemIsEditable,如何禁止双击修改item名称
时间: 2024-02-11 22:03:47 浏览: 65
如果您已经将模型的 `flags()` 函数中的 `Qt::ItemIsEditable` 标志添加到项目的标志中,但希望禁止双击编辑项目名称,可以在视图中覆盖 `QTreeView` 或 `QTableView` 的 `edit()` 函数,并根据需要返回 `nullptr` 或 `QAbstractItemDelegate` 对象。这样,双击将不会触发编辑操作。
以下是一个示例,演示如何禁止双击编辑树形视图中的项目名称:
```cpp
class YourTreeView : public QTreeView
{
public:
YourTreeView(QWidget* parent = nullptr) : QTreeView(parent) {}
protected:
void edit(const QModelIndex& index, QAbstractItemView::EditTrigger trigger, QEvent* event) override
{
Q_UNUSED(event)
if (trigger == QAbstractItemView::DoubleClicked) {
// 禁止双击编辑项目
return;
}
QTreeView::edit(index, trigger, event);
}
};
```
在上述示例中,我们覆盖了 `QTreeView` 的 `edit()` 函数,并在检测到双击事件时直接返回,以禁止双击编辑项目名称。如果您想允许其他编辑操作(例如通过右键菜单或键盘快捷键),则可以根据需要修改此函数。
希望这可以帮助您实现所需的功能!
阅读全文