开发者社区> y2hr4cjzssnlm> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

详解Qt5.12.9属性表控件:QtPropertyBrowser的使用示例/折叠/展开/小数位数/QSS样式/标题修改/选中行号等(2)

简介: 详解Qt5.12.9属性表控件:QtPropertyBrowser的使用示例/折叠/展开/小数位数/QSS样式/标题修改/选中行号等
+关注继续查看

三、常见问题之表头宽度怎么调整?


转载自https://blog.csdn.net/xinyuelan/article/details/88706486


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


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


QtTreePropertyBrowser::Interactive            //交互

QtTreePropertyBrowser::Fixed                  //固定

QtTreePropertyBrowser::ResizeToContents       //自动调整内容

QtTreePropertyBrowser::Stretch                //拉伸


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


方法1、设置QtTreePropertyBrowser对象模式为QtTreePropertyBrowser::ResizeToContents。


ui->widgetL->setResizeMode(QtTreePropertyBrowser::ResizeToContents);


试试看,能否满足。如果不行,就尝试下面的方法2。


方法2、设置QtTreePropertyBrowser对象模式为QtTreePropertyBrowser::Interactive。


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

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->widgetL->setResizeMode(QtTreePropertyBrowser::Interactive);

ui->widgetL->setSplitterPosition(0, 235);

ui->widgetL->setSplitterPosition(1, 170);


四、常见问题之表格的标题怎么修改?


QtPropertyBrowser里面的表格本质上是QTreeWidget。需要自己手动在类QtTreePropertyBrowser,新增成员函数,实现标题的修改:


class QtTreePropertyBrowser : public QtAbstractPropertyBrowser
{
public:
    void setHeaderLabels(const QStringList &labels);
}
void QtTreePropertyBrowser::setHeaderLabels(const QStringList &labels)
{
    d_ptr->m_treeWidget->setHeaderLabels(labels);
}


使用说明:


//标题


QStringList head; head << tr("轴号") << tr("坐标值(mm)");


ui->widget->setHeaderLabels(head);


image.png



五、常见问题之表格的选中单行的信号响应


QtPropertyBrowser里面的表格本质上是QTreeWidget。鼠标单选每一行时,如何判断当前选中的是哪一行?


通过信号QtTreePropertyBrowser::currentItemChanged来实现。


//信号槽
    connect(ui->widgetL, &QtTreePropertyBrowser::currentItemChanged, this, &FormProcessProofing::slotItemChangedL);
void FormProcessProofing::slotItemChangedL(QtBrowserItem *item)
{
    int index = -1;
    for (int i = 0; i < m_listPropL.size(); i++)
    {
        if (m_listPropL[i] == item->property())
        {
            index = i;
            break;
        }
    }
    std::cout << index << endl;
}


六、常见问题之小数位数如何调整?


QVariant::Double表格数值默认是2位小数,如何改变?


源文件qtpropertymanager.cpp提供了接口函数
/*!
    \fn void QtDoublePropertyManager::setDecimals(QtProperty *property, int prec)
    Sets the precision of the given \a property to \a prec.
    The valid decimal range is 0-13. The default is 2.
    \sa decimals()
*/
void QtDoublePropertyManager::setDecimals(QtProperty *property, int prec)
QtVariantPropertyManager *pVarManager = new QtVariantPropertyManager(ui->widget);
item = pVarManager->addProperty(QVariant::Double, QStringLiteral("浮点数据"));
item->setAttribute(QLatin1String("decimals"), 5);
item->setValue(3.1415926);
ui->widget->addProperty(item);



七、常见问题之折叠展开


//折叠


QtVariantPropertyManager *pVarManager = new QtVariantPropertyManager(ui->widget);

QSet<QtProperty *> p = pVarManager->properties();

QList<QtBrowserItem *> list = ui->widget_2->items(groupItem);

ui->widget_2->setExpanded(list.at(0), false);



八、常见问题之QSS字体颜色


表格里的文字颜色,其实就是对应QSS的QTreeWidget


QTreeWidget{

background-color: #1d1f20;

color:#386487;

}

QTreeWidget::item{

background: #1d1f20;

}


x、源码分享


请下载完整的示例1源码:


https://download.csdn.net/download/libaineu2004/12914683


请下载完整的示例2源码:


https://download.csdn.net/download/libaineu2004/12914790


我的开源仓库:


https://gitee.com/libaineu2004/qproperty-browser-demo


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
视觉智能开放平台与Serverless工作流深度合作实现API调用的上云托管!
本文介绍如何快速使用 Serverless 工作流 + 阿里云视觉智能开放平台构建人工智能服务应用
862 0
视觉智能开放平台与Serverless工作流深度合作实现API调用的上云托管!
本文介绍如何快速使用 Serverless 工作流 + 阿里云视觉智能开放平台构建人工智能服务应用
897 0
[更新设计]跨平台物联网通讯框架ServerSuperIO 2.0 ,功能、BUG、细节说明,以及升级思考过程!
注:ServerSuperIO 2.0 还没有提交到开源社区,在内部测试!!! 1. ServerSuperIO(SSIO)说明      SSIO是基于早期工业现场300波特率通讯传输应用场景发展、演化而来。
586 0
WPF中嵌入WinForm中的webbrowser控件
原文:WPF中嵌入WinForm中的webbrowser控件 使用VS2008创建WPF应用程序,需使用webbrowser。从工具箱中添加WPF组件中的webbrowser发现其中有很多属性事件不能使用。
1219 0
WebBrowser控件使用详解
原文:WebBrowser控件使用详解 方法 说明  GoBack 相当于IE的...
722 0
WebBrowser控件使用详解
方法 说明 GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退一项  GoForward 相当于IE的“前进”按钮,使你在当前历史列表中前进一项  GoHome 相当于IE的“主...
828 0
WebBrowser控件使用详解
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/4022770 WebB...
716 0
682
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载