PySide6.QtCore.QModelRoleDataSpan¶
- class QModelRoleDataSpan¶
QModelRoleDataSpan
类提供了对QModelRoleData
对象的跨度。更多…概要¶
方法¶
def
__init__()
def
__getitem__()
def
__len__()
def
begin()
def
data()
def
end()
def
length()
def
operator[]()
def
size()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
一个
QModelRoleDataSpan
被用作对QModelRoleData
对象数组的抽象。与视图类似,
QModelRoleDataSpan
提供了一个小对象(指针和大小),可以传递给需要检查数组内容的函数。QModelRoleDataSpan
可以从任何类似数组的序列(普通数组、QVector
、std::vector、QVarLengthArray
等)构造。此外,它不拥有该序列,因此该序列必须比任何引用它的QModelRoleDataSpan
对象存活得更久。与视图不同,
QModelRoleDataSpan
是一个跨度,因此它允许对底层元素进行修改。QModelRoleDataSpan
的主要用途是使模型能够在一次调用中返回与不同角色对应的数据。为了从模型中绘制一个元素,视图(通过其委托)通常会通过根据需要多次调用
data()
来请求同一索引的多个角色:text = model.data(index, Qt.DisplayRole) decoration = model.data(index, Qt.DecorationRole) checkState = model.data(index, Qt.CheckStateRole) # etc.
QModelRoleDataSpan
允许视图仅通过一次函数调用请求相同的数据。这是通过让视图准备一个合适的
QModelRoleData
对象数组来实现的,每个对象都初始化为应获取的角色。然后,该数组被包装在一个QModelRoleDataSpan
对象中,然后传递给模型的multiData()
函数。std.array<QModelRoleData, 3> roleData = { { QModelRoleData(Qt.DisplayRole), QModelRoleData(Qt.DecorationRole), QModelRoleData(Qt.CheckStateRole) } } # Usually, this is not necessary: A QModelRoleDataSpan # will be built automatically for you when passing an array-like # container to multiData(). span = QModelRoleDataSpan(roleData) model.multiData(index, span) # Use roleData[0].data(), roleData[1].data(), etc.
建议视图存储
QModelRoleData
对象的数组(可能还包括相应的span),并在后续调用模型时重复使用它。这可以减少与创建和返回QVariant
对象相关的内存分配。最后,给定一个
QModelRoleDataSpan
对象,模型的责任是填充与跨度中每个角色对应的数据。具体如何实现取决于具体的模型类。以下是一个可能的实现草图,它遍历跨度并在每个元素上使用setData()
:def multiData(self, index, roleDataSpan): for roleData in roleDataSpan: role = roleData.role() # ... obtain the data for index and role ... roleData.setData(result)
另请参阅
- __init__()¶
构造一个空的
QModelRoleDataSpan
。它的data()
将被设置为None
,并且其长度为零。- __init__(modelRoleData)
- Parameters:
modelRoleData –
QModelRoleData
构造一个跨越
modelRoleData
的QModelRoleDataSpan
,将其视为一个单元素数组。- __init__(modelRoleData, len)
- Parameters:
modelRoleData –
QModelRoleData
len – int
构造一个跨越从
modelRoleData
开始且长度为len
的数组的QModelRoleDataSpan
。注意
只要此对象未被销毁,数组就必须保持活动状态。
- __getitem__()¶
- __len__()¶
- begin()¶
- Return type:
返回指向此对象表示的跨度开头的指针。
- data()¶
- Return type:
返回指向此对象表示的跨度开头的指针。
- end()¶
- Return type:
返回一个指向此对象表示的跨度末尾之后的虚构元素的指针。
- length()¶
- Return type:
整数
返回此对象表示的跨度的长度。
- operator(index)¶
- Parameters:
索引 – int
- Return type:
返回对跨度中位置
index
处的QModelRoleData
的可修改引用。注意
index
必须是此范围的有效索引(0 <=index
<size()
)。- size()¶
- Return type:
整数
返回此对象表示的跨度的长度。