使用 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

使用 QStandardItemModel 更改 QTableView 的行颜色

QVariant保存指针数据

如何调整 QTreeView 和 QStandardItemModel 中的行大小?