Qt5.10下QtTreePropertyBrowser的表头调整

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:39   1778   0

QtTreePropertyBrowser的表头默认模式是QtTreePropertyBrowser::Stretch,表头是不允许动态调整大小的,如果Item比较长,就会出现“XXXXXX...”的情况。如下图所示。

修改前:

QtTreePropertyBrowser的表头属性有以下几种:

QtTreePropertyBrowser::Interactive            //交互
QtTreePropertyBrowser::Fixed                  //固定
QtTreePropertyBrowser::ResizeToContents       //自动调整内容
QtTreePropertyBrowser::Stretch                //拉伸

如何设置成可以通过鼠标动态的调整表头段的大小呢?

1、设置QtTreePropertyBrowser对象模式为QtTreePropertyBrowser::Interactive。

ui->param_property_tree->setResizeMode(QtTreePropertyBrowser::Interactive);

2、QtTreePropertyBrowser类自带一个可以指定表头大小的函数 QtTreePropertyBrowser::setSplitterPosition(int position),可以通过该函数设置表头的宽度,以适应Item的大小。但该函数仅能设定第一列,看原型函数,如下:

void QtTreePropertyBrowser::setSplitterPosition(int position)
{
    d_ptr->m_treeWidget->header()->resizeSection(0, position);
}

通过对函数 setSplitterPosition()的重载,实现可修改任一表头的宽度,代码如下:

/**
* @brief QtTreePropertyBrowser::setSplitterPosition修改表头宽度 - 新增
* @param index 表头索引
* @param position 表头宽度
*/
void QtTreePropertyBrowser::setSplitterPosition(int index, int position)
{
    d_ptr->m_treeWidget->header()->resizeSection(index, position);
}

在自己的cpp属性树初始化中,加入如下代码,可实现需求。

//一次调频动作结果
m_pResultVarManager = new QtVariantPropertyManager(ui->result_property_tree);
ui->result_property_tree->setResizeMode(QtTreePropertyBrowser::Interactive);
ui->result_property_tree->setSplitterPosition(0, 235);
ui->result_property_tree->setSplitterPosition(1, 170);

修改后:

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP