【问题标题】:QTreeView/QHeaderView resize only first column to stretch and interactive bothQTreeView/QHeaderView 仅调整第一列的大小以拉伸和交互
【发布时间】:2016-08-05 05:50:45
【问题描述】:

我有一个有 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);
          }
     }

但这对于第一列并没有按预期工作。尽管第一列会延伸,但它不像其他列那样可调整大小/交互。因此,我想为第一列添加拉伸+交互。其余 4 列也可能只是交互式的。 这可能吗?

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    根据documentationQHeaderView::ResizeMode,当模式已设置为QHeaderView::Stretch...

    大小不能由用户或以编程方式更改。

    所以,不,我认为使用标准 API 无法实现您想要的。

    您可以尝试将调整大小模式设置为QHeaderView::Custom 并覆盖QHeaderView 中的各种鼠标事件处理程序,方法是在现有QHeaderView 上安装事件过滤器或创建您自己的继承自QHeaderView 的类和通过QTreeView::setHeader 在您的视图中安装它的一个实例。

    【讨论】:

      猜你喜欢
      • 2017-10-07
      • 2023-04-02
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      相关资源
      最近更新 更多