我没想到要改QtCore

Qt的类型系统设计的很精妙,本身的200多个class/struct都已经注册,1024后的index留给了用户注册,都是在运行的时候注册,同时注册了Destruct和Construct,为了后面的placement new留好了接口。
如果作为独立的app是没有问题的,QAppliction和程序属于同一个生命周期,同时消亡同时诞生,没有彼此的分别,但作为插件,比如在Microstaion平台上,Microstaion在对话期一直存在一个QApplication实例,但各个插件可以在卸载与加载之间往复,QMetaType则对此欠考虑,如果一个插件卸载,则它的类型和Destruct和Construct都还存在,在重新加载插件后,用接口创建的时候,还是旧的地址,如果插件的地址还是旧的地址,则Destruct和Construct都还有效,反之,则会crash。
这些注册的类型没有接口删除,唯一的一个接口,还不能删除由Q_DECLEAR_METETYPE 声明的类型,只能删除由qRegisterMetaType注册的类型...
只能动动Qt的根了,那就是QtCore模块,QtCore是所有其他模块的基础包括GUI模块。
能修改源码的自由度,是使用闭源库的兄弟不能理解的幸福啊。。。
虽然编译整个库需要几个小时,编译QtCore却只要几分钟。。。
让我的Qt插件在Microstation上飞。。。


xyz.png

view1.jpg
view2.jpg

图中的插件是QCustomPlot,对大数据兼容好,整个库也很小,和QCharts和qwt一样,他们作为插件使用的时候都有bugs,我只是改正了QCustomPlot的问题,其他两个改不动,放弃挣扎了。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容