qt使⽤浏览器控件加载html5,属性浏览器控件
QtTreePropertyBrowser。。。
属性浏览器控件QtTreePropertyBrowser编译成动态库(设计师插件)
⽬录
⼀、回顾
⼆、动态库编译
1、命令⾏编译动态库和测试程序
2、vs⼯具编译动态库和测试程序
3、安装⽂档
4、测试⽂档
三、设计师插件编译
1、重写QDesignerCustomWidgetInterface
2、添加到插件列表
3、拷贝⽣成的dll
4、重启QtDesigner
四、多说⼀句
五、相关⽂章
原⽂链接:属性浏览器控件QtTreePropertyBrowser编译成动态库(设计师插件)
⼀、回顾
上⼀篇⽂章超级实⽤的属性浏览器控件--QtTreePropertyBrowser讲了怎么去编译QtTreePropertyBrowser库,并且可以简单实⽤。由于我下载的库是基于Qt4的版本,所以编译起来也费劲巴拉的,改了好久的源码才编译通过。
本篇⽂章我们核⼼讲解的是怎么把这个库编译成动态库,让别的模块去动态调⽤。
这⾥引⼊Qt官⽅维护的模块QtSolutions,⾥边就包含了QtTreePropertyBrowser这个项⽬,最关键是Qt5可以直接编译通过。
QtSolutions⾥边不仅仅有QtTreePropertyBrowser这个项⽬,⽽且包含了多个有⽤模块,⽂章最后会简单做以介绍。
下⾯我们主要还是围绕QtTreePropertyBrowser这个库来进⾏讲解。。
⼆、动态库编译
编译成动态库的⽅式有2种,⼀种是命令⾏,另⼀种是vs⼯具,其实本质上都是⼀样的,都是使⽤了msvc编译器。
如果想要使⽤其他编译器编译,本篇⽂章可以作为参考,可能有些地⽅不太实⽤。
编译这种长期维护的项⽬,我们⾸先就是去看代码中的⽂档说明,⼀般都会有编译步骤。
这个库也不例外,看上图中红⾊款圈出来的部分,就是我们编译的步骤,简单吧。
configure.bat,如果需要⽣成动态库则需要添加-library参数
1、命令⾏编译动态库和测试程序
命令⾏cd到源码根⽬录,执⾏以下步骤即可
confiture.bat-library
qmake
nmake
没有什么悬念,代码应该可以正常编译通过,这⾥就不做过多解释。
重点看下怎么使⽤vs⼯具进⾏编译
2、vs⼯具编译动态库和测试程序
⾸先在⽹上随便搜索下pro转sln⼯程的⽂章,总结⼀下就是下⾯两句话
qmakexxx.pro
qmake-tpvc-r
对于我们的qtpropertybrowser代码可能就像下⾯这样
qmakeqtpropertybrowser.pro
qmake-tpvc-r
htmlbutton属性如果不使⽤这种⽅式,也可以使⽤vs-addin插件直接打开pro⽂件
执⾏完上述两句话之后,会发现我们的根⽬录下多了⼀个qtpropertybrowser.sln⼯程⽂件。每⼀个项⽬⽂件夹下也多了⼀个
simple.vcxproj项⽬⽂件。
接下来就是⽤vs打开qtpropertybrowser.sln⼯程⽂件,然后进⾏编译了。
通过命令⾏⽣成的QtSolutions_PropertyBrowser-head.vcxproj这个⼯程⽂件有⼀些⼩问题,需要修改下⼯程配置,否则编译会失败。
打开⼯程属性->C/C++->预处理器->预处理器定义项。
修改QT_QTPROPERTYBROWSER_IMPORT宏为QT_QTPROPERTYBROWSER_EXPORT
然后编译,动态库的编译结果如下图,其他测试程序这⾥没有放出来。
3、安装⽂档
根据说明⽂件,尝试如下两种操作均失败
添加qch⽂件,发现没有这个⽂件
使⽤添加命令assustant-addContentFilexxx.dcf添加,报错。
后来⽆意中看到了⼀⽚⽂章创建⽂档和⾃定义的qtassistant,讲怎么⽣成Qt帮助⽂档的,发现其中有根据qhp⽂件⽣成qch⽂件的⽅式,尝试了下,居然可以。
操作步骤如下:
qhelpgeneratorxxx.qhp-oxxx.qch
assistant-registerxxx.qch
对于我们的qtpropertybrowser代码,可能会像下⾯这样。⾸先进⼊doc\html⽬录下,然后执⾏如下操作
qhelpgeneratorqtpropertybrowser.qhp-oqtpropertybrowser.qch
assistant-registerqtpropertybrowser.qch
第⼆步也可以通过⼯具来添加,如上图所⽰。编辑菜单->⾸选项,选中⽂档页签,添加⾃⼰的qch⽂件即可。
4、测试⽂档
搜索页签下输⼊"QtPro",搜索到结果QtProperty,如下图所⽰,表⽰我们的⽂档集成成功。
三、设计师插件编译
动态库都有了,设计师插件还会远吗?
⾃⼰写⼀个Qt插件,把需要导⼊到desinger中的控件都注册进来即可。
⼤致流程如下
1、重写QDesignerCustomWidgetInterface
WidgetInterface类继承⾃QDesignerCustomWidgetInterface,WidgetInterface类包含了⼀些默认⾏为,这⾥就不贴出来了。classTreeBrowserInterface:publicWidgetInterface
{
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
TreeBrowserInterface(QObject*parent);
virtualQWidget*createWidget(QWidget*parent)override;
};
2、添加到插件列表
WidgetCollectionInterface::WidgetCollectionInterface(QObject*parent/*=nullptr*/)
:QObject(parent)
{
d_plugins.append(newQPB::TreeBrowserInterface(this));
d_plugins.append(newQPB::ButtonBrowserInterface(this));
d_plugins.append(newQPB::GroupBoxBrowserInterface(this));
}
3、拷贝⽣成的dll
⽣成的设计师动态库拷贝到Qt安装⽬录下,具体⽬录为和bin同级plugins⽬录下的designer⽂件夹中
4、重启QtDesigner
重新启动设计师后,WidgetBox列表中多了3个控件。
⼀切准备就绪,剩下的就是⾃⼰玩⼉了
关于怎么写设计师插件,不是本⽂的重点,想学习的同学直接去百度即可
四、多说⼀句
qt-solutions是⼀个Qt官⽅维护的开源库,其中有8个项⽬,QtTreePropertyBrowser就是我们今天讲到的其中⼀个。
这个8个模块如下列表:
qtbrowserplugin浏览器插件
qtlockedfile锁定⽂件
qtpropertybrowser属性编辑器
qtscriptclassic脚本⽀持
qtservice提供服务属性
qtsingleapplication单例运⾏
qtsoapSOAP协议
qtwinmigrate混合运⾏,qt写界⾯dll,集成到Win32⼯程中。
属性浏览器控件QtTreePropertyBrowser的运⾏效果,可以到超级实⽤的属性浏览器控件--QtTreePropertyBrowser这篇⽂章中查看。
有⼈说,Qt.Soluations这个库的代码时基于Qt4写的,⽽且最后的测试时间也是Qt4.4,最好使⽤Qt新版本的qtpropertybrowser代码,这⾥我⾃⼰也进⾏了测试,直接把Qt5的代码覆盖当前版本的代码,编译也是能通过的,唯⼀⽐较坑的⼀点就是不能作为动态库使⽤了。
然后我就屁颠屁颠的,把所有需要导出的类都添加了导出宏,⼿都给我加酸了。
随着后续对这个控件的使⽤,具体细节上的区别等以后再过来完善。
写到最后,使⽤BeyondCompare⼯具进⾏了两份代码的对⽐,其实本质上差别不⼤。⽬前发现的唯⼀⼀个区别较⼤的就是QtTreePropertyBrowser这个类中使⽤的树控件问题了,Qt4时使⽤的是QTreeView,⽽到了Qt5使⽤的是QTreeWidget。
五、相关⽂章
超级实⽤的属性浏览器控件--QtTreePropertyBrowser
创建⽂档和⾃定义的qtassistant
QtPropertyBrowser控件在Qt5.5上的安装配置
以上内容,基本就是本篇⽂章的所有内容啦!表格树控件可以使⽤起来了。希望可以帮到⼤家。
⼀起期待后续封装完善的控件。。。
照着⽂章⼀步⼀步进⾏,所有库应该都可以编译通过,如果实在搞不定需要⼯程代码的可以留邮箱
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论