我有一个有5列的QTreeView。要求是仅拉伸第一列,但是所有5列都应该由用户调整大小(即,它们也可以是交互式的)。所以我写了下面的代码:
int numCols = myModel->columnCount();
for(int i=0;i<numCols;i++)
{
myQTreeView->resizeColumnToContents(i);
if(i==0)
{
myQTreeView->header()->setResizeMode(i,QHeaderView::Stretch);
}
else
{
myQTreeView->header()->setResizeMode(i,QHeaderView::Interactive);
}
}
但这不符合第一栏的预期效果。虽然第一列延伸但是它不像其他列那样可调整大小/交互。因此,我想为第1列添加stretch + interactive。其余的4列也可能只是交互式的。 这可能吗?
答案 0 :(得分:2)
根据QHeaderView::ResizeMode
的{{3}},当模式设置为QHeaderView::Stretch
时...
用户无法或以编程方式更改大小。
所以,不,我认为使用标准API无法实现您的目标。
您可以尝试将调整大小模式设置为QHeaderView::Custom
,并通过在现有QHeaderView
上安装事件过滤器或创建自己的类来覆盖QHeaderView
中的各种鼠标事件处理程序继承自QHeaderView
并通过QTreeView::setHeader
在您的视图中安装该实例。