大家都知道,QTreeWidget每行是通过QTreeWidgetItem来描述的,也就是说如果对Item单独设置属性的话,使得某一行可以编辑或者不可编辑:
QTreeWidgetItem* item = new Widget);/// 设置某一行的内容可编辑
item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable);
有时候我们想要用QTreeWidget给用户提供Key-Value的设置界面,要禁止第一列参数名称(key)编辑功能,而Qt没有直接提供列设置功能,而QTreeWidget(还包括其他数据控件,如表格、列表等,简称MV-D)创建编辑器和显示功能是由Delegate提供的。
所以我们可以从Delegate入手,禁用某列编辑功能。
class DisableEditor : public QStyledItemDelegate
{
public:DisableEditor(QObject* parent) : QStyledItemDelegate(parent) {}virtual QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option,const QModelIndex &index) const override{return 0;}
};/// 设置第一列不可编辑
ui.treeWidget->setItemDelegateForColumn(0, new DisableEditor(
ui.treeWidget));
本文发布于:2024-01-31 23:10:45,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170671384532070.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |