超级实用的属性浏览器控件–QtTreePropertyBrowser
Qt库封装了很多控件,种类也比较多,其中容器控件包括:表格、树和列表。
使用过QtDesigner的同学应该都知道,这个工具中有一个属性编辑器,是一个属性浏览器控件,就像vs中控件属性面板一样。
今天我们就来介绍一款使用QTreeWidget封装的属性控件QtTreePropertyBrowser,这个控件现在还没有被Qt正式的收录。
要想使用这个QtTreePropertyBrowser库,首先我们需要去github上去下载源码,然后自行编译。
如下图所示,是github上的代码提交记录,仔细看提交时间,距离现在已经有9年过去了。
因此这个代码编译起来还是比较费劲的,如果觉着编译费劲,也可以直接下载别人已经编译好了的QtPropertyBrowser库,或者留下邮箱我发送我编译好的demo。这里我自己也是想熟悉这个库,并且使用起来,因此自己决定对这个库中的语法错误进行解决,最后顺利到达效果。
源码升级过程中主要参考了Qt5.4.2编译 qtpropertybrowser-2.51(从4修改到5的除错过程)这篇文章,还有我自己处理的几个小问题
使用vs中的qt-addin插件直接打开pro文件,打开工程后,如下图所示。
接下来是修改编译错误,大概有如下9个错误类型,大多都数都可以直接使用全局替换。
移除QApplication::UnicodeUTF8,别忘记移除这个参数之前的逗号,很重要,要不然编译不过。
Qt4到Qt5有一个很大的变化,就是很多QtGui模块中的东西被拆分到了QtWidgets模块中。
这里我们使用vs打开工程后,编译时提示我们模块找不到的话,需要把很多的QtGui改成QtWidgets,就像下面这样
全局替换,直接把Q_TYPENAME替换成typename
全局替换,直接把qVariantValue()替换成qvariant_cast()
点击领取Qt学习资料+视频教程~
Qt5时qFindChildren()被废除了,可以用findChildren()替代
一定要添加上QtWidgets模块,如下图所示,每个工程都需要这样设置
程序编译完成之后,会生成如下几个可执行程序。
尝试运行其中的simple.exe可执行程序,结果如下,看起来是不是还不错。
在窗体中实现选择和确认
【分享成果,随喜正能量】不说他人长短,不念他人恩怨,是善心;时刻诚心待人,日夜专心做事,是懿行。心地善良的人,容貌一定动人;心里知足的人,生活一定快乐。贪欲是痛苦之根,淡泊是快乐之源。待人要有平等心,对已要有平常心。积善可以得福,积德可以增寿。。
《VBA之Excel应用》是非常经典的,是我推出的第七套教程,定位于初级。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非常容易的掌握相关的知识,这套教程共三册,十七章,都是我们在利用EXCEL工作过程中需要掌握的知识点,希望大家能掌握利用。今日讲解的内容是“VBA之EXCEL应用”的第十七章 “用户窗体(Userform)的实例应用”:在窗体中实现选择和确认
大家好,我们讲解这个章节的最后一个实例,利用多窗体实现选择和确认,关于多窗体的讲解也是我们窗体应用的一部分。我们这节中将学习到多窗体的利用,以及图片的加载方法。是非常实用的一讲内容。
我们来构建一个利用多窗口实现选择和确认的应用,如下截图:
这个截图中有分类选项,比如水果的分类有苹果,香蕉,桃子;宠物有狗狗,小猫,猴子,每种分类后面有备注介绍,我们要利用一个窗体实现上述分类的简洁选择,同时为了用户的方便要提供给用户图片的确认,让用户在选择的同时可以利用图片进行确认,选择完成后单击确定就可以在工作表上标记颜色。
这个应用场景非常适合给小朋友认识事物,有分类,有选择,有确认最后有标识。
为了实现上述的场景,我们要先建立一个思路:
1)在窗体上放入一个多窗体的控件。
2)在第一个窗体上,这个窗体上要放置两个复合框控件ComboBox,第一个复合框要加载的是类别,第二个复合框加载的是类别对应的项目。在两个复合框的下面放一个框架,框架中放入一个标签控件。标签控件用于放上述工作表中的备注部分。
3)在第二个窗体中,我们要加载一个图片,图片是对应第一个窗体中第二个复合框的选项的。
4) 在第一个窗体中我们添加两个按钮控件,用于在工作表中显示用户选择的项目。
5) 为了在第二个窗体中加载图片,我们要首先在固定的路径下放置相应的图片。这里图片的命名是以第二个复合框的项的名称来命名的。
思路建立后我们要搭建这个窗体了。
我们先看我已经搭建好的窗体:
1)选择窗口:
2)确认窗口:
3)各个控件的属性设置
对于标签,复合框,我们还是采用之前的设置:
注意Caption属性设置为空,两个标签控件都是如此。
对于图片的加载框我们设置如下的属性:
对于图片的picturesizemode属性,有以下几个选择:
① 剪裁 0(默认值)图片以实际大小显示。 如果图片大于附件控件, 则会对图片进行剪裁。
② 拉伸 1 将图片沿水平方向和垂直方向拉伸以填满整个附加控件(即使破坏图片原有的长宽比例也是如此)。
③ 缩放 3 在保持其原有长宽比例的情况下,将图片放大到最大尺寸。
到此窗体的搭建及属性的设置工作就结束了,我们下节将讲解代码部分。
今日内容回向:
1) 如何实现选择和确认的不同窗体实现?
2) 窗体中图片的加载用什么控件?有几种模式的设定?
本讲内容参考程序文件:工作簿17.xlsm
【分享成果,随喜正能量】从你出生的那一刻起,端什么碗,吃什么饭,经历什么事,什么时候和谁结婚和谁离婚都是定数,别太难为自己,顺其自然就好。人生的剧本你早在天堂看了,你之所以选择那个剧本,是因为这一生中,有你认为值得的地方。。
我20多年的VBA成果全在下面的资料中:
C#学习随笔—自定义控件(面板)
最近一直在研究C#的自定义控件,因为在实际开发使用中发现C# winform的自定义控件并不满足需求。因此,自己在逐步开始接触自定义控件,并将其记录。
首先,先完成一个最基本控件的实现,即一个面板,说起来就是一个框,这个框,可以调节里面的填充颜色,设置框线的宽度,虚实线类型,是方形,圆形或者椭圆形等。
涉及的C#第一个概念:get和set访问器,我们在使用控件属性时,会经常用到,属性的设置以及读取,该访问器就帮助我们实现这一功能,举例如下:(如我想要设置是否显示边框)
基本格式如上所示,首先肯定需要定义一个参数来存储该属性,get访问器就是会返回该参数,set访问器会设置该参数,注意,set访问器有一个隐式参数,即value。value持有需要保存的数据。因此,value可以直接使用,而不需要重新定义。当然,该属性是要外部访问的,因此设置为PUBLIC。
之后呢,只需要在Visual Studio建立用户控件即可,因为我们是要建基类控件,因此还需要继承IContainerControl类,默认的用户控件仅仅继承了UserControl类。因此修改如下:
用户控件的属性比较容易,只需要调用get和set访问器即可实现,那么控件的样子需要怎么弄呢?其实就是重绘,因此需要对控件的绘制函数进行重写。
那么我们需要实现怎么样的控件呢?见下图:
同一个控件的4个设置
上面就是我想要实现的面板类型,可以给用户足够的开放度,选择圆形,长方形,椭圆形。可以设置渐变的背景色,可以设置框线的类型,可以设置框线的宽度,等等。
重绘函数的实现如下:
剩下的也没啥好说的,直接上代码:
上面就是我显示的全部代码,实现效果就是图中所示。另外这个是最简单的一个自定义控件的实现,没有涉及事件,这个可以作为其他控件的基类,如按钮,标签等等。后面的文章我会对其他常用控件进行重绘。敬请期待,当然,如果大家有一些好的实现方式,也可以留言告诉我,大家共同学习进步。
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。