前言

最近在做项目的时候,找了一个开源的小控件,发现里面有一个设置样式的骚操作,就是根据控件的不同属性来显示不同的样式。比如如下:
代码是在网上找的大佬的样式:Qt分页导航控件

根据不同的属性显示不一样的样式

这下面是我自己的qss,根据当前页面按钮的不同属性来确定样式

PageNavigator QLabel[page=true]
{
color: rgba(139, 184, 239, 1);
border-radius: 12px;
} PageNavigator QLabel[currentPage=true]
{
background-color: rgba(31, 96, 159, 1);
color: rgb(255, 255, 255);
border-radius: 12px;
} PageNavigator QLabel[page=true]:hover
{
color: white;
border-radius: 12px;
background-color: qlineargradient(spread:reflect, x1:0, y1:0, x2:0, y2:1,stop:0 rgba(53, 121, 238, 255), stop:1 rgba(0, 202, 237, 255));
}

[page=true]就代表当PageNavigator类中的QLable的page属性等于true时的样式,

setProperty

而这个属性呢,设置是调用这个函数的setProperty

label->setProperty("page", "true");
// label.setProperty("page", true); 这个也是可以的

但是这里我又有一个疑问,既然是设置属性,那为什么不要像我自己之前了解的那些要用Q_PROPERTY呢,后面再Qt的官方文档里,看到了部分;

Q_PROPERTY和DynamicProperty


setProperty这个函数是如果设置的属性没有用Q_PROPERTY定义,只添加一个dynamicPropertyQ_PROPERTY则是写在metaObject,添加到metaObject的这些属性,可以用在qml调用c++的时候,能够暴露c++的属性来给qml处理,同样也可以在Qt Creator里的设计界面显示出来。而setProperty就是简简单单的设置动态属性,不会在设计界面显示出来。
在你使用了这个设置属性之后,最好是调用一遍这个接口style()->polish()来更新一下样式表,否则可能会没有作用

Qt通过setProperty来达到设置控件的不同样式表的更多相关文章

  1. WPF:DataTemplateSelector设置控件不同的样式

    原文 WPF:DataTemplateSelector设置控件不同的样式 最近想实现这么个东西,一个ListBox, 里面的ListBoxItem可能是文本框.下拉框.日期选择控件等等. 很自然的想到 ...

  2. [转]设置控件全局显示样式appearance proxy

    转自:huifeidexin_1的专栏 appearance是apple在iOS5.0上加的一个协议,它让程序员可以很轻松地改变某控件的全局样式(背景) @selector(appearance) 支 ...

  3. 设置控件全局显示样式 appearance

    iOS5及其以后提供了一个比较强大的工具UIAppearance,我们通过UIAppearance设置一些UI的全局效果,这样就可以很方便的实现UI的自定义效果又能最简单的实现统一界面风格,它提供如下 ...

  4. QSS基础-设置控件样式

    1.QSS基础-设置同类控件样式'''QSS基础:Qt Style SheetQt样式表用于设置控件的样式和风格(比如控件的背景色,字体颜色,字体大小等)和CSS的功能比较相似,功能相似''' fro ...

  5. 在Qt中使用AnyCAD三维建模控件

    AnyCAD C++ SDK专为Qt框架增加了AnyPlatformQt.lib模块,在Qt中使用AnyCAD三维建模控件变得十分简单. 下载 Qt高速下载:http://pan.baidu.com/ ...

  6. Qt编写自定义控件9-导航按钮控件

    前言 导航按钮控件,主要用于各种漂亮精美的导航条,我们经常在web中看到导航条都非常精美,都是html+css+js实现的,还自带动画过度效果,Qt提供的qss其实也是无敌的,支持基本上所有的CSS2 ...

  7. Qt编写自定义控件48-面板窗体控件

    一.前言 很多时候需要有一个控件,能够替代容器控件,自动容纳多个widget,自适应宽高,然后提供滚动条功能,这就必然需要用到QScrollArea控件,可设置各个子面板的间距等,也在很多系统中用到, ...

  8. Qt编写自定义控件47-面板区域控件

    一.前言 在很多web网页上,经常可以看到一个设备对应一个面板,或者某种同等类型的信息全部放在一个面板上,该面板还可以拖来拖去的,这个控件首次用在智能访客管理平台中,比如身份证信息一个面板,访客信息一 ...

  9. Qt编写自定义控件45-柱状标尺控件

    一.前言 这个控件写了很久了,是最早期的一批控件中的一个,和温度计控件类似,都是垂直的进度条,可以设置不同的背景颜色,左侧的刻度也可以自由设定,还提供了动画效果,其实就是开启定时器慢慢的进度到设定的目 ...

  10. Qt编写自定义控件35-GIF录屏控件

    一.前言 在平时的写作过程中,经常需要将一些操作动作和效果图截图成gif格式,使得涵盖的信息更全面更生动,有时候可以将整个操作过程和运行效果录制成MP4,但是文件体积比较大,而且很多网站不便于上传,基 ...

随机推荐

  1. java int转byte数组

    int 转 byte[] 低字节在前(低字节序)public static byte[] toLH(int n) { byte[] b = new byte[4]; b[0] = (byte) (n ...

  2. springboot 2.x 集成quartz持久化到一个单独的dataSource时遇到的坑

    由于希望可以在集群环境中运行定时job,但考虑到多个job实例有可能带来job重复执行的问题,新项目的job打算从原生的spring task实现改成quartz job实现,并采用jdbc的存储方式 ...

  3. Qt编写物联网管理平台30-用户登录退出

    一.前言 一个用户登录界面,是一个完整的应用系统,尤其是客户端系统必备的一个功能模块,传统的登录处理一般都是和本地的用户信息进行比对,而现代的登录系统一般是发送请求到服务器进行验证,无论何种方式,都是 ...

  4. [转]基于图像的三维模型重建4——增量SFM

    内容 几种BA的形式 同时优化相机和三维点 优化相机 只优化三维点 单目相机 增量运动恢复结构(Incremental SFM) 运动恢复结构的几个问题 几种BA的形式 数学模型 n个三维点和m个相机 ...

  5. 基于NVIDIA NGC容器安装使用PaddlePaddle

    基于NVIDIA NGC容器安装使用PaddlePaddle PaddlePaddle PaddlePaddle作为国内首个自主研发的深度学习平台,自2016年正式向专业社区开源,是一个技术先进.功能 ...

  6. 【原创】浅谈EtherCAT主站EOE(下)-EtherCAT IgH主站EoE具体实现

    目录 1.IgH 框架概述 2. IgH EOE机制 2.1 EoE服务规范 2.1 EoE虚拟网络设备 2.1.1 EoE Virtual Network Interfaces 2.1.2 EoE ...

  7. IIS通过URL重写配置http跳转https,排除部分域名

    <rewrite> <rules> <rule name="http to https" stopProcessing="true" ...

  8. Note / Solution Set -「Binomial Sum」两道例题

      删本地文件的时候瞟了一眼内容 ... 这篇好像忘记发布了?   给定 \(n,k\), 求出 \[\textit{ans}=\sum_{i=0}^n\binom{n}{i}i^k\bmod(10^ ...

  9. IDEA神器插件-40款

    IDEA 插件安装 步骤 IDEA里面,选择打开 File --> Settings --> Plugins 在Plugins里面, 可以搜索需要的插件 (下面的标题),然后安装 如下图: ...

  10. 微服务实战系列(四)-注册中心springcloud alibaba nacos-copy

    1.场景描述 因要用到微服务,关于注册中心这块,与同事在技术原型上做了讨论,初步定的方案是使用:阿里巴巴的nacos+springcloud gateway,下面表格是同事整理的注册中心对比,以前用的 ...