• 超级实用的属性浏览器控件--QtTreePropertyBrowser


    一、源码下载

    Qt库封装了很多控件,种类也比较多,其中容器控件包括:表格、树和列表。

    使用过QtDesigner的同学应该都知道,这个工具中有一个属性编辑器,是一个属性浏览器控件,就像vs中控件属性面板一样。

    今天我们就来介绍一款使用QTreeWidget封装的属性控件QtTreePropertyBrowser,这个控件现在还没有被Qt正式的收录。

    要想使用这个QtTreePropertyBrowser库,首先我们需要去github上去下载源码,然后自行编译。

    二、代码编译

    如下图所示,是github上的代码提交记录,仔细看提交时间,距离现在已经有9年过去了。

    因此这个代码编译起来还是比较费劲的,如果觉着编译费劲,也可以直接下载别人已经编译好了的QtPropertyBrowser库,或者留下邮箱我发送我编译好的demo。这里我自己也是想熟悉这个库,并且使用起来,因此自己决定对这个库中的语法错误进行解决,最后顺利到达效果。

    源码升级过程中主要参考了Qt5.4.2编译 qtpropertybrowser-2.51(从4修改到5的除错过程)这篇文章,还有我自己处理的几个小问题

    使用vs中的qt-addin插件直接打开pro文件,打开工程后,如下图所示。

    接下来是修改编译错误,大概有如下9个错误类型,大多都数都可以直接使用全局替换。

    1、intersect函数替换为intersected

    //旧代码
    area.intersect(QRect(0, 0, width(), height()));
    //新代码
    area.intersected(QRect(0, 0, width(), height()));
    

    2、移除UnicodeUTF8

    移除QApplication::UnicodeUTF8,别忘记移除这个参数之前的逗号,很重要,要不然编译不过。

    3、QtGui模块拆分

    Qt4到Qt5有一个很大的变化,就是很多QtGui模块中的东西被拆分到了QtWidgets模块中。

    这里我们使用vs打开工程后,编译时提示我们模块找不到的话,需要把很多的QtGui改成QtWidgets,就像下面这样

    //旧代码
    #include <QtGui/QWidget>
    //新代码
    #include <QtWidgets/QWidget>
    

    4、Q_TYPENAME错误

    全局替换,直接把Q_TYPENAME替换成typename

    5、qVariantValue错误

    全局替换,直接把qVariantValue()替换成qvariant_cast()

    6、qFindChildren错误

    Qt5时qFindChildren()被废除了,可以用findChildren()替代

    //旧代码
    QList<QtIntPropertyManager *> intPropertyManagers = qFindChildren<QtIntPropertyManager *>(manager);  
    //新代码
    QList<QtIntPropertyManager *> intPropertyManagers = manager->findChildren<QtIntPropertyManager *>();  
    

    7、setMovable移除

    //旧代码
    setMovable()
    //新代码
    setSectionsMovable()
    

    8、setMovable移除

    //旧代码
    setResizeMode()
    //新代码
    setSectionResizeMode()
    

    9、添加QtWidgets模块

    一定要添加上QtWidgets模块,如下图所示,每个工程都需要这样设置

    三、运行结果

    程序编译完成之后,会生成如下几个可执行程序。

    尝试运行其中的simple.exe可执行程序,结果如下,看起来是不是还不错。

    四、参考文章

    Qt-解锁QtPropertyBrowser控件

    Qt5.4.2编译 qtpropertybrowser-2.51(从4修改到5的除错过程)


    以上的内容,基本上就是本篇文章的内容所有内容啦!表格树控件可以使用起来了。希望可以帮到大家。


    如果您觉得文章不错,不妨给个打赏,写作不易,感谢各位的支持。您的支持是我最大的动力,谢谢!!!




    很重要--转载声明

    1. 本站文章无特别说明,皆为原创,版权所有,转载时请用链接的方式,给出原文出处。同时写上原作者:朝十晚八 or Twowords

    2. 如要转载,请原文转载,如在转载时修改本文,请事先告知,谢绝在转载时通过修改本文达到有利于转载者的目的。


  • 相关阅读:
    json
    封装PDO
    PDO
    jquery练习
    jquery包
    jquery
    租房子 多条件查询
    查询
    新闻修改处理页面
    新闻添加数据
  • 原文地址:https://www.cnblogs.com/swarmbees/p/11117259.html
Copyright © 2020-2023  润新知