resizeColumnToContent不使用自定义模型和委托

时间:2014-05-02 17:08:55

标签: python c++ qt pyqt

我正在使用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中的布局在其他任何地方都能很好地工作,这真是奇怪,这就是这个问题。

0 个答案:

没有答案