【发布时间】:2022-04-11 06:51:28
【问题描述】:
我正在使用 QTreeView 在 4 列中显示自定义模型。这基本上有效,但我无法让 resizeColumnToContent 工作。
我试过了
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() 中返回一个大小。但这是不可能的,因为每个单元格的实际文本/内容是在委托中确定的,而不是在模型中。
另一个猜测是在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 的其他任何地方都运行良好,这真是一个奇怪的问题。
【问题讨论】: