zoukankan      html  css  js  c++  java
  • Qt5.4.2编译 qtpropertybrowser-2.51(从4修改到5的除错过程)

       qtpropertybrowser是一个洛基亚时代的一个产物,其实它就是QtDesigner侧栏那种样子而已。网上大部分的都只适用于Qt4,今天头脑发热想用Qt5编译一下,发觉一大堆错误,因为Qt4有些函数在Qt5里面是没有的,所以不断地找替代函数。当我辛辛苦苦编译出来后,在网上一搜,大把人发布了修改过后的源代码,可以支持Qt5编译,晕死了,早知道就不用那么辛苦了。不过也记录一下怎么去编译好了,下面只讲在编译时候出错的解决方法:

       拿到源码不能把qtpropertybrowser.pro拉到Creator里面,要把buildlib文件夹的buildlib.pro拉到Creator里面。

    错误1:

    解决方法:地球人都知道Qt5跟Qt4很明显的不同就是这个,所以把#include <QtGui/QWidget>改成#include <QtWidgets/QWidget>

    错误2:

    解决方法:如果你看看Qt4的源码就知道Q_TYPENAME被定义成typename ,所以直接把Q_TYPENAME替换成typename

    错误3:

    解决方法:这个qVariantValue()已经被Qt5弃用了,可以用qvariant_cast()替换掉它,说到这里大家要好好利用Creator里面的查找替换功能,不然改死你~~~

    错误4:

    解决方法:很明显qFindChildren()被废除了,可以用findChildren()替代,但是看清楚这个函数怎么用了,我把

    [cpp] view plain copy
     
    1. QList<QtIntPropertyManager *> intPropertyManagers = qFindChildren<QtIntPropertyManager *>(manager);  


    改成:

    [cpp] view plain copy
     
    1. QList<QtIntPropertyManager *> intPropertyManagers = manager->findChildren<QtIntPropertyManager *>();  

    错误5:

    解决方法:把最后一个参数去掉,不要忘了删那个逗号!


     

    错误6:

     

    解决方法:把setMovable()改成setSectionsMovable();把setResizeMode()改成setSectionResizeMode()

    错误7:

    解决方法,在buildlib.pro文件里面添加下面的代码:

    [cpp] view plain copy
     
    1. QT       += core gui  
    2. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  


     

    下面是图片展:

    https://blog.csdn.net/trustguan/article/details/47004759

  • 相关阅读:
    C# Enum转换
    Split
    WCF访问安全
    [转] 检索 COM 类工厂中 CLSID 为 {000209FF00000000C000000000000046} 的组件时失败
    ICSharpCode.SharpZipLib.dll压缩的zip包,7zip解压时出错
    js控制ctrl+p
    跨域访问WCF问题
    sql:过滤字段中是否包含数字
    序列化/反序化
    [转]RegistryKey 操作注册表
  • 原文地址:https://www.cnblogs.com/findumars/p/8626998.html
Copyright © 2011-2022 走看看