使用 QStandardItemModel 使 QTableView 的特定列只读
Posted
技术标签:
【中文标题】使用 QStandardItemModel 使 QTableView 的特定列只读【英文标题】:Make Specific Columns of QTableView readonly with QStandardItemModel 【发布时间】:2013-11-12 14:25:31 【问题描述】:我有一个 QTableView,它的模型是 QStandardItemModel。如何使 tableView 中的特定列只读?看来我无法更改 tableView 的编辑触发器,因为我希望特定列是可编辑的。
【问题讨论】:
【参考方案1】:您可以尝试为该列中的每个项目设置QStandardItem::setFlags()
,不包括Qt::ItemIsEditable
标志。例如:
[..]
QStandardItem *item = new QStandardItem;
item->setFlags(Qt::NoItemFlags);
[..]
【讨论】:
谢谢,1)我如何从第 2 项中排除标志)注意我在 tableview 上使用了一个委托 我试过这个:item->flags() &- Qt::ItemIsEditable。但它不起作用。 (也许是因为委托) 最好只明确删除您要删除的标志,而不是全部:item->setFlags(item->flags() & ~Qt::ItemIsEditable)
。
@Mosi :你的尝试没有成功,因为-2 != ~2
。您有效地删除了 Qt::ItemIsSelectable
而不是 Qt::ItemIsEditable
。以上是关于使用 QStandardItemModel 使 QTableView 的特定列只读的主要内容,如果未能解决你的问题,请参考以下文章
Qt入门教程数据模型篇 QStandardItemModel标准项目模型
Qt入门教程数据模型篇 QStandardItemModel标准项目模型
有没有办法将 QTableView 模型转换为 QStandardItemModel