首先参考两篇博客:
Qt中的属性系统:https://blog.csdn.net/libaineu2004/article/details/88106976
https://blog.csdn.net/feiyangqingyun/article/details/121177993
总结:通过宏定义(Q_PROPERTY)定义的属性的是一般意义上的属性;可以通过其他方法直接设置动态属性。
------------------------------------------------------------------------------------------------------------------------------------
样式表与属性的结合:
样式表的使用时会涉及到属性,这里的属性和qt部件的属性有什么关联呢?
**样式表有自己的一套属性,可以应用于部件上,与部件本身有无此属性无关。(两个体系)
但是却可以通过给部件添加动态属性的方式,将qt的动态属性与样式表进行联系:
qt中为了用户界面外观的动态变化,属性选择器可以与动态属性组合使用。动态属性在Qt4.2中引入,允许为编译时不存在的QObject属性分配属性值。即:如果为QObject实例设置一个urgent属性为true,该属性将跟随该实例,但不会为urgent属性包含一个Q_PROPERTY宏。
创建样式选择器依赖于动态属性,例如:urgent(动态属性),可以用一个非常动态的方式凸显用户界面。例如:
会匹配QLineEdit中的属性urgent=true的实例。从而设置color属性为红色。(当然若是匹配QLineEdit中自带的默认属性也是可以的)
**那么样式表能不能对部件的原有属性进行设置?答案是可以:
从 Qt4.3 开始,任何可设计的 Q_PROPERTY 都可以使用“qproperty-属性名称”语法来设置样 式表。如:
MyLabel{qproperty-pixmap:url(pixmap.png);}
MyGroupBox{qproperty-titleColor:rgb(100,200,100);}
QPushButton{qproperty-iconSize:20px 20px;}
------------------------------------------------------------------------------------------------------------------------------------------
样式表知识:
ps:* 对于同一个部件,类如按钮,设置两次样式的话,即使两次设置的属性不冲突,还是会采用最后一次的设置样式进行覆盖,
要想达到设置多个属性的目的,即将多个设置命令写入同一个样式中,命令间用分号隔开。
*直接选中部件,不设置选择器的时候,默认是类型选择器。(特殊:上述(5)冲突解决第二点下半部分红字)
*(5)冲突解决中的层叠注意是合并而不是覆盖,而当属性相同的时,才会触发冲突。
----------------------------------------------------------------------------------------------------------------
选择器用法详解:
https://wjrsbu.smartapps.cn/zhihu/article?id=34555751&isShared=1&uid_f=1610236877092388864&_swebfr=1&_swebFromHost=baiduboxapp
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!