gpt4 book ai didi

QTableView - 将第一列设置为 "read only"

转载 作者:行者123 更新时间:2023-12-04 13:25:43 29 4
gpt4 key购买 nike

我有一个基于 QStandardItemModel 的 QTableView。我想将第一列设置为“只读”,将所有其他列设置为可编辑。

我不是 QT 和 OOP 的专家,我在网上和 QT 文档中进行了搜索,我知道我需要重新实现我的模型的标志(const QModelIndex &index)函数,但我不知道'知道如何以及在何处重新实现。

提前致谢!

最佳答案

您应该创建一个继承自 QStandardItemModel 的新类,重新实现方法 flags 并使用您的新类而不是标准类。

class MyModel : public QStandardItemModel
{
public:
virtual Qt::ItemFlags flags(const QModelIndex& index) const override
{
Qt::ItemFlags result = QStandardItemModel::flags(index);
if (index.column() == 0) //0 is the first column!
{
result &= ~Qt::ItemIsEditable;
}
return result;
}
}

另一种方法:
- 创建一个继承自 QStandardItem 的新类,
- 以同样的方式重新实现flags
- 使用新类的实例调用QStandardItemModel::setItemPrototype
这种方法有点复杂,因为您还需要重新实现方法 QStandardItem::clone

关于QTableView - 将第一列设置为 "read only",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26603868/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com