resizeColumnToContent不能与自定义模型和委托一起工作
resizeColumnToContent not working with custom model and delegate
我使用QTreeView在4列中显示自定义模型。这基本上工作,但我只是不能得到resizeColumnToContent工作。
I tried this
ui->treeSkills->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
ui->treeSkills->header()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
ui->treeSkills->header()->setSectionResizeMode(2, QHeaderView::ResizeToContents);
ui->treeSkills->header()->setSectionResizeMode(3, QHeaderView::ResizeToContents);
:
ui->treeSkills->resizeColumnToContents(0);
ui->treeSkills->resizeColumnToContents(1);
ui->treeSkills->resizeColumnToContents(2);
ui->treeSkills->resizeColumnToContents(3);
设置数据之前和之后。
一种猜测是,当请求某个角色时,我可能必须在model::data()中返回一个size。但这是不可能的,因为每个单元格的实际文本/内容是在委托中确定的,而不是在模型中。
另一种猜测是在paint()中的委托中改变矩形的大小,就像这样:
options.rect.setWidth(options.rect.width() * 2);
p_painter->save();
p_painter->setClipRect(options.rect);
drawBackground(p_painter, options, p_index);
drawDisplay(p_painter, options, options.rect, text);
drawFocus(p_painter, options, options.rect);
p_painter->restore();
但是,还是没有什么变化。
有什么办法吗?考虑到布局在Qt的其他地方工作得很好,这真的很奇怪,这是这样一个问题。
遇到了同样的问题,它最终是我在自定义模型中设置SizeHintRole
:
def data(self, index, role):
...
if role == QtCore.Qt.SizeHintRole:
return QtCore.QSize(-1, 22)
在这里,我试图为所有行设置一个固定的垂直大小,它最终也搞乱了宽度。不确定这是否与您的情况相同,但我建议查看您的data()
定义(甚至headerData()
)。
相关文章:
- 如何使我的 sizeof sum 结构与空参数包一起工作
- SFINAE:它如何与派生类一起工作?
- std::remove() 按预期处理文字,但不能与取消引用的迭代器一起工作
- 尝试让条形码扫描仪与Arduino一起工作
- 从书本中学习C++无法使该程序与类一起工作
- 让类与运算符一起工作更简单的方法
- 如何使lambda与std::nullopt一起工作
- 当我使用长整型时,我的代码不起作用,它与 int 一起工作得很好
- 返回对象如何与分配运算符一起工作
- GLM :: perspective()和glm :: lookat()一起工作
- SFML OpenGL:如何同时与他们一起工作
- 使QTConcurrent ::映射与Lambdas一起工作
- 如何与C 字符串中的非ASCII字符一起工作
- 我如何适应擦除式习惯与矢量元组一起工作
- 需要帮助使 VOID 代码与总工资一起工作
- 我怎样才能让这个刽子手代码与 wxDev-C++ 一起工作
- Googletest 在 bazel test 中永远不会失败(在它应该失败的地方),但与 cmake & clion 一起工作
- 常量变量初始化仅与成员初始化列表一起工作
- feal_ptr与unique_ptr一起工作
- OpenGL Ping Pong可与一张通行证一起工作,而不是两个通行证