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);
修改后: |