查看完整版本: [-- Qt写的图形配置试验品 --]

QTCN开发网 -> Qt 作品展 -> Qt写的图形配置试验品 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

khedive 2017-12-12 16:49

Qt写的图形配置试验品

一直有个想法,就是在图形配置界面上所有的图符都应该是插件,而且都应该能用脚本编辑
所有属性都应该能用属性页来编辑,当然简单的整型、基本颜色这些都不成问题
但把Qt里的颜色填充、QtCharts里的曲线这类复杂的属性编辑也放到属性页上来做,似乎有些困难
我的基本想法是,如果让属性页随着某个属性可变,那这个问题应该说解决了一小部分
本着这个思路,开始写了一个试验程序,纯属实验验证思路用
先来张最基本的操作,这个按钮很熟悉吧,没错,刘大师的作品
所以做这个试验程序的时候第一个图符我就把它移植到QGraphicsItem里面了
[attachment=18261]
如果一行代码也不写,连插件也不写,能不能加图符呢,也能
[attachment=18289]


拷贝一些svg、或者图片文件到指定目录下,然后图符就出现了,再然后就可以操作了
[attachment=18264]

现在也能做到属性页可以随属性的变化而变化,感觉这应该是能做复杂属性编辑的一个基础了
操作过程中突然发现线型设置成dot时居然有动画效果,小孩子见了以后玩得不亦乐乎,也是个意外了
这里改动多边形的点数,属性数也会动态改变,我试过一般改到50个点是很快的,到80就要等上几秒了
没查原因是哪儿慢,估计是属性页的刷新问题
[attachment=18291]

运行包和部分源代码放在下面的地址里
链接: https://pan.baidu.com/s/1jIcQ47O 密码: trkd
程序可以直接运行,用windeployqt打过包的
看上去这么多图符,实际上一共就5个,其中两个的代码我已经放在里面了
一个就是上面所说的那个按钮,还有一个是显示svg用的
我是在win7 32位,vs2013、Qt5.7.0下编译的,如果你有相同的环境,这两个程序应该是能直接编译的
如果你没有,那就不用试了
这个程序后面有时间应该还会再写一写,毕竟当初的愿望还都没能实现
也可能会因为发现没有能力实现就放弃了

神经023 2017-12-12 17:58

liudianwu 2017-12-12 18:15
很好很强大!继续!

九重水 2017-12-12 22:44
SVG图片作为一个ITEM,怎样做到平滑伸缩?

khedive 2017-12-13 08:51
九重水:SVG图片作为一个ITEM,怎样做到平滑伸缩?[表情]  (2017-12-12 22:44) 

我啥也没做,就按照外接矩形框的大小调用了一下QSvgRenderer的render函数
程序里面就这么写的
svgRender.render(painter ,QRectF(-rc.width() / 2, -rc.height() / 2, rc.width(), rc.height()));

ccazqyy 2017-12-13 09:33
确实很好很强大

liuchangyin 2017-12-13 10:25

liuchangyin 2017-12-13 10:25
很好很强大

九重水 2017-12-13 14:24
khedive:我啥也没做,就按照外接矩形框的大小调用了一下QSvgRenderer的render函数
程序里面就这么写的
svgRender.render(painter ,QRectF(-rc.width() / 2, -rc.height() / 2, rc.width(), rc.height())); (2017-12-13 08:51) 

外面的框?
如果是要保存这个拉伸过的SVG图片,怎么保存?
(我不是问怎么保存SVG图片,是问根据这个框变化之后的SVG图片,如何保存这个变化?
我之前是按照一个缩放因子拉伸,这个可以保存回去,但根据外面那个框直接保存找不到方法。
按照一个缩放因子拉伸有时候拉伸的时候,过渡不平滑。)

khedive 2017-12-13 15:07
九重水:外面的框?
如果是要保存这个拉伸过的SVG图片,怎么保存?
(我不是问怎么保存SVG图片,是问根据这个框变化之后的SVG图片,如何保存这个变化?
我之前是按照一个缩放因子拉伸,这个可以保存回去,但根据外面那个框直接保存找不到方法。
....... (2017-12-13 14:24) 

是的,保存的时候就是保存的它的位置大小,加载的时候也是根据位置大小render了一下,拉伸的时候也只是改变了rect的大小,根据rect大小调整了一下,感觉这么做还可以,暂时没发现有什么大的问题

stlcours 2017-12-13 16:41
什么叫做部分源码??

khedive 2017-12-13 17:13
stlcours:什么叫做部分源码??[表情]  (2017-12-13 16:41) 

部分源码只是体现个思路,而且如果开发环境相同,这两个图元都是能够编译修改的,当然你也没有这个必要。
至于说为什么没有公开所有源码呢,我也是有私心的,一方面自己有空的时候还要做下去,虽然现在看来没啥用,也不知道要做成啥样,我也希望最好能从外部获得一点思路;另一方面单位本身也有个远古时代(连上古时代都算不上)开发的复杂无比的系统,功能还特别强大,现在估计也没人能修改得了,移植更是不可能。我想嘛,它总有一天会撑不下去的,假如哪天要升级,假如升级的时候我还在这儿,现在练手的很多东西到时就能用上,总不能让人误会我抄的网上的吧

stlcours 2017-12-13 17:30
khedive:部分源码只是体现个思路,而且如果开发环境相同,这两个图元都是能够编译修改的,当然你也没有这个必要。
至于说为什么没有公开所有源码呢,我也是有私心的,一方面自己有空的时候还要做下去,虽然现在看来没啥用,也不知道要做成啥样,我也希望最好能从外部获得一点思路;另一方 .. (2017-12-13 17:13)

根据我的观察,一个功能良好的软件,没有几年的全职时间是做不成的。这个项目的基础固然不错,但你这点私心是没有用的,得下决心认真做几年全职才有可能(期间的生活费问题以及心理问题以及家庭问题,自己想办法解决——你猜对了,这几乎相当于是创业了)。听上去很难,但人生很短暂,能做好一件事已经很不容易了。



hanheyfon 2018-05-30 12:58
    

18130198510 2018-06-01 09:13
很好,正是我也想做的

crazy 2018-06-01 22:41
厉害啊

return 2018-07-10 15:52
      

powerxyh 2018-08-03 00:02
      


查看完整版本: [-- Qt写的图形配置试验品 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled