超级实用的属性浏览器控件–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

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。