gpt4 book ai didi

c++ - 将自定义 QItemDelegate 与 QSortFilterProxyModel 结合使用

转载 作者:行者123 更新时间:2023-11-30 05:17:09 25 4
gpt4 key购买 nike

我有一个自定义 QSortFilterProxyModel,它只显示表格中的某些行和列。我还有一个自定义 QItemDelegate 来控制表中某些值的绘制方式。我只将委托(delegate)应用于需要它的列,问题似乎是当我让代理模型隐藏某些列时它会弄乱委托(delegate)。

例如,假设我有 A-G 列,并将自定义委托(delegate)应用于 F 列。

A  B  C  D  E  F  G
-------------------
o o o o o X o
o o o o o X o
o o o o o X o

如果我的代理模型不显示 B 列,我的委托(delegate)最终会改为应用于 G 列。

A  C  D  E  F  G
----------------
o o o o o X
o o o o o X
o o o o o X

我已经能够通过调用在 View 上而不是在代理模型中隐藏列来解决这个问题

table->setColumnHidden(B, true);

我想这可行,但这是唯一的解决方案吗?委托(delegate)和代理模型类不能更好地协同工作似乎是一个错误,就像您可以在同一模型上使用一个或另一个但不能同时使用两者一样。

最佳答案

您可以在过滤后的索引(每列一个)上尝试 mapToSource 并检查原始列并根据它设置相应的项目委托(delegate)。

for (int i = 0; i < proxy->columnCount(); ++i) {
if (proxy->mapToSource(proxy->index(0, i)).column() == 6) {
table->setItemDelegateForColumn(i, yourDelegate);
}
}

关于c++ - 将自定义 QItemDelegate 与 QSortFilterProxyModel 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42260866/

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