Qt样式基础

news/2024/10/31 5:34:18/

使用Qt做样式定制,经常会使用QSS对控件UI进行美化,但使用过程中会遇到很多的细节,这里摘取一二记录备忘。

问题一、自定义窗体(继承自QWidget)样式表不生效:

原因:qss样式需要通过paint才能正常绘制到控件表面,而QWidget的paintEvent()是空的,这就要求我们在继承QWidget的时候重载paintEvent()。 如下所示:

//If you subclass from QWidget, you need to provide a paintEvent for your custom QWidget as below:void CustomWidget::paintEvent(QPaintEvent *){QStyleOption opt;opt.init(this);QPainter p(this);style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);}//The above code is a no-operation if there is no stylesheet set

  说明:当然,如果使用QFrame代替QWidget,也就是说自定义窗体继承自QFrame(并且带有框架属性),则qss样式是可以生效的。

问题二:如何在运行时动态的改变控件的样式?

解决方案:

1)我们可以在代码中动态的设置控件的objectName (相当于QSS样式的选择器). 但使用setObjectName方法后,会发现控件的样式并没有实时的刷新,这就需要我们手动的 setStyle 让控件动态的改变qss样式。 如下所示:

void GBAUtils::resetStyleSheet(QWidget *w)
{//w->style()->unpolish(w); //清除旧的样式//w->style()->polish(w);   //更新为新的样式w->setStyle(w->style());
}

参考文章:

qt中动态变更objectname来动态变动控件样式_setobjectname qt 马上更新_雨田嘟嘟的博客-CSDN博客

Qt的qss通过动态属性来改变样式_qt更新样式_c1s2d3n4cs的博客-CSDN博客


http://www.ppmy.cn/news/1026894.html

相关文章

Amazon CloudFront 部署小指南(五)- 使用 Amazon 边缘技术优化游戏内资源更新发布...

内容简介 游戏内资源包括玩家的装备/弹药/材料等素材,对游戏内资源的发布和更新是游戏运营商的一个常规业务流程,使用频率会十分高,所以游戏运营商希望该流程可以做到简化和可控。针对这个需求,我们设计了 3 个架构,面…

java重写与重载的区别

在Java中,重写(Override)和重载(Overload)是两种不同的概念: 重写(Override): 重写是指子类重新定义(覆盖)了从父类继承而来的方法。重写要求子类…

Git:在本地电脑上如何使用git?

git 版本: 2.40.1.windows.1 文章目录 一. 使用git之前你必须要理解的几个概念1.1 理解工作区、版本库、暂存区的概念1.2 提交Git版本库的步骤【分两步执行】 二. Git本地库实战2.1 初始化版本库2.2 新建 & 提交 & 状态2.3 查看日志2.4 回退 & 穿梭 &am…

运维监控学习笔记4

系统监控: CPU: 内存: IO INPUT/OUTPUT(网络、磁盘) CPU三个重要概念: 上下文切换:CPU调度器实施的进程的切换过程,称为上下文切换。CPU寄存器的作用。 上下文切换越频繁&#…

LeetCode 每日一题 2023/8/7-2023/8/13

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 8/7 344. 反转字符串8/8 1749. 任意子数组和的绝对值的最大值8/9 1281. 整数的各位积和之差8/10 1289. 下降路径最小和 II8/11 1572. 矩阵对角线元素的和8/12 23. 合并 K 个…

5. vue-element-admin 二次开发攻略指南

vue-element-admin一站式后端 UI框架二次开发攻略指南 1.1 前言1.2 修改 Logo 名称和图标1.3 控制设置齿轮是否显示或隐藏1.4 框架安装依赖优化脚本1.5 定义多环境配置文件1.6 优化打包流程1.7 优化打包流程输出文件路径配置1.8 nginx 配置1.9 docker file 配置 2. 代码地址 1.…

移动端网页中的前端视频技术探索

引言 随着移动设备的普及和网络速度的提升,移动端网页中的视频播放已经成为了越来越重要的功能需求。本篇博客将介绍一些在移动端网页中实现前端视频播放的技术探索,并提供详细的代码示例。 1. 基本视频标签 在移动端网页中实现视频播放最基本的方法就…

力扣T171

为什么 public int titleToNumber(String columnTitle) {int number 0;int sum 0;for (int i 0; i < columnTitle.length(); i) {int temp (int) (columnTitle.charAt(i) -64);System.out.println(temp);double sum1 temp * Math.pow(26, columnTitle.length() - 1 - …