我正在使用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()中委托中的rect大小,如下所示:
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中的布局在其他任何地方都能很好地工作,这真是奇怪,这就是这个问题。