Qt编写控件属性设计器3-拉伸控件】的更多相关文章

一.前言 插件控件加载了,拖曳控件也实现了,接下来就是一个最难点了,跟QtDesigner或者其他开发环境一样,能够任意自由的拉伸控件大小,移动位置,为了这个功能,还特别编写了一个控件来实现这个功能,名字叫SelectWidget描点跟随窗体控件,大致的原理就是安装事件过滤器,在生成控件的时候将该控件传入描点跟随控件,自动识别鼠标的位置,按下拉动的距离来改变控件的大小,绘制描点指示器以便用户拉伸使用. 描点跟随控件可设置是否绘制描点.边距.描点颜色.描点尺寸.描点样式 正方形+圆形.选中边框宽度…
一.前言 上一篇文章把插件加载好了,并且把插件中的所有控件都显示到了列表框中,这次要做的就是实现拖曳控件的功能,用户选择一个控件拖曳到画布上,松开,在松开位置处自动实例化该控件,这个需要用到dropEvent和dragEnterEvent事件,重新实现这两个事件,对拖曳的对象进行过滤并调用函数实例化该控件,在实例化该控件的同时实例化控件跟随控件以便拉伸调整大小和位置.这里需要注意的是dragEnterEvent是必须的,很多人以为拖曳只要实现dropEvent就可以了,其实不行的,没有效果的,需…
一.前言 自从研究Qt编写自定义控件以来,一发不可收拾,越多越多人有类似的需求找我定制控件,陆陆续续写了上百个控件,目前已超过150个,于是逐渐衍生了另外一个需求,提供一个控件属性设计器,类似QtDesigner一样,可以方便的拖曳控件,改变属性,立即应用,并导出到文件方便下次直接加载,这个设计器有点像组态中的一个雏形,提供了基本的加载控件,导入导出数据,数据源绑定等. 本系列文章将从加载控件.拖曳控件.拉伸控件.加载属性.中文属性.数据源采集.导入导出xml几个方面介绍功能点编码思路并贴出核心…
一.功能特点 自动加载插件文件中的所有控件生成列表,默认自带的控件超过120个. 拖曳到画布自动生成对应的控件,所见即所得. 右侧中文属性栏,改变对应的属性立即应用到对应选中控件,直观简洁,非常适合小白使用. 独创属性栏文字翻译映射机制,效率极高,可以非常方便拓展其他语言的属性栏. 所有控件的属性自动提取并显示在右侧属性栏,包括枚举值下拉框等. 支持手动选择插件文件,外部导入插件文件. 可以将当前画布的所有控件配置信息导出到xml文件. 可以手动选择xml文件打开控件布局,自动根据xml文件加载…
一.前言 上一篇文章负责把设计好的控件数据导出到了xml文件,本偏文章负责把导出的xml数据文件导入,然后在画布上自动生成对应的控件,Qt内置的xml数据解析功能,非常强大,都封装在QtXml组件中,Qt有个好处就是,封装了众多的各大操作系统平台的功能,尤其是GUI控件,不愧是超大型一站式GUI超市,虽然网络组件不是很强大,但是应付一些基础应用还是绰绰有余的.在导出xml数据的时候,属性列表和值都按照xml的属性存储的而不是子节点,所以在解析的时候需要遍历节点的属性名称和属性值,QDomName…
一.前言 能够导出控件布局和属性设置数据到xml文件或者其他文件,也是一个非常实用的功能,类似于QtDesigner中把页面设计好以后生成的.ui结尾的文件,其实就是xml文件,按照约定的规则存储好控件名称和属性名称及对应的属性值,然后打开的时候按照这个规则取出来就行了.每个控件还有固定的几个数据需要存储,比如XY轴和对应的宽度高度,然后在xml数据文件的最开始还可以存储整个画布的宽度高度以便其他用途.导出到xml格式,是为了方便解析,毕竟xml数据格式的解析,各种语言平台都有,而且都是非常成熟…
一.前言 用户属性是后面新增加的一个功能,自定义控件如果采用的Q_PROPERTY修饰的属性,会自动识别到属性栏中,这个一般称为控件属性,在组态设计软件中,光有控件本身的控件属性还是不够的,毕竟这些属性仅仅是以外观为主,并不能表示某个设备的属性,所以需要除了这个控件属性以外增加用户属性来存储该控件关联的设备属性,比如设备编号.设备名称.地理位置等信息,而这些信息也要和控件属性一样,都能导入导出到xml文件,同时能支持多个用户属性,用户自己填写名字和值,名字和值都支持中文描述,在xml文件中为了区…
一.前言 数据库作为数据源,在很多组态软件中使用非常多,指定数据库类型,填写好数据库连接信息,指定对应的数据库表和字段,采集间隔,程序按照采集间隔自动采集数据库数据,绑定到界面上的控件赋值显示即可.使用数据库作为数据源,有个非常大的好处就是不用去写额外的通信代码,也与对方的什么语言什么平台无关,不会有扯皮的事情发生,例如通信协议不规范不准确导致解析不对的情况啊,这样就支持任意的语言和平台啦,毕竟有数据库这个中间载体过渡,而且任何语言任何平台都会有数据库,都兼容,所以采用数据库作为数据源不失为一种…
一.前言 上一篇文章已经打通了数据源之一的串口采集,这次要说的是网络采集,网络通信目前用的最多的是三种,TCP/UDP/HTTP,其中tcp通信又包括了客户端服务端两种,tcp通信才用了多次握手机制不丢包,但是耗费资源多而且需要建立连接.udp通信在大数据量或者网络不稳定的情况下,可能丢包,而且顺序无法保证,但是一个包的数据肯定是正确的,由于占用资源极少而且不需要建立连接,在很多场景中应用也蛮多,我个人用udp以来,也没发现过丢包的情况,可能数据量不够大或者是在局域网内的原因吧,反正用起来还是蛮…
一.前言 数据源是组态软件的核心灵魂,少了数据源,组态就是个花架子没卵用,一般数据源有三种方式获取,串口.网络.数据库,至于数据规则是什么,这个用户自己指定,本设计器全部采用第一个字节作为数据来演示. 串口通信在大量的工业控制领域用的最多,就因为稳定两个字,长期霸占了几十年的通信规则,现在还有大量的工业控制设备使用的就是串口通信,Qt5以后封装了串口通信的类,不过据说不大好用,也不大稳定,本人在早期的Qt版本比如Qt5.3时代用过几次,是有点莫名其妙的问题,后面索性就不在用自带的了,而是用的第三…