Qt样式表之一:Qt样式表和盒子模型介绍

一、Qt样式表介绍

Qt样式表是一个可以自定义部件外观的十分强大的机制,可以用来美化部件。Qt样式表的概念、术语和语法都受到了HTML的层叠样式表(Cascading Style Sheets, CSS)的启发,不过与CSS不同的是,Qt样式表应用于部件的世界。


二、使用代码设置样式表

样式表使用文本描述,可以使用 QApplication:: setStyleSheet() 函数将其设置到整个应用程序上,也可以使用 QWidget::setStyleSheet() 函数将其设置到一个指定的部件(还有它的子部件)上。如果在不同的级别都设置了样式表,那么Qt会使用所有有效的样式表,这被称为样式表的层叠。下面来看一个简单的例子。


新建Qt Gui应用,项目名称为myStyleSheets,类名为MainWindow,基类保持QMainWindow不变。建立好项目后进入设计模式,向界面上拖入一个PushButton和一个Horizontal Slider,然后在mainwindow.cpp文件中的构造函数里添加如下代码:

//设置pushButton的背景颜色为黄色
ui->pushButton->setStyleSheet("background:yellow");
//设置horizontalSlider的背贵为蓝色
ui->horizontalSlider->setStyleSheet("background:blue");

这样便设置了两个部件的背景色。不过像这样调用指定部件的setStyleSheet()函数只会对这个部件应用该样式表,如果想对所有的相同部件都使用相同的样式表,那么可以在它们的父部件上设置样式表。因为这里两个部件都在MainWindow上,所以可以为MainWindow设置样式表。先注释掉上面的两行代码,然后添加如下代码:

this->setStyleSheet("background:blue");

这样,以后再往主窗口上添加的所有QPushButton部件和QSlider部件的背景色都会改为这里指定的颜色。


三、在设计模式中设置样式表

除了使用代码来设置样式表外,也可以在设计模式中为添加到界面上的部件设置样式表,这样更加直观。先注释掉上面添加的代码,然后进入设计模式。在界面上右击,在弹出的菜单中选择“改变样式表”,这时会出现编辑样式表对话框,在其中输入如下代码:

QPushButton{
}

注意光标留在第一个大括号后。然后单击上面“添加颜色”选项后面的下拉箭头, 在弹出的列表中选择“background-color”一项。这时会弹出选择颜色对话框,随便选择一个颜色,然后单击“确定按钮”,这时会自动添加代码:

QPushButton{background-color: rgb(0, 0, 255);
}

可以看到,在这里设置样式表不仅很便捷而且很直观,不仅可以设置颜色,还可以使用图片,使用渐变颜色或者更改字体。在设计模式,有时无法正常显示设置好的样式表效果,不过运行程序后会正常显示的。这里是在MainWindow界面上设置了样式表,当然,也可以按照这种方法在指定的部件上添加样式表。


四、盒子模型介绍

使用Style Sheets时,所有的部件都被视为有四个同心矩形的盒子(box):边缘矩形(margin rectangle),边框矩形(border rectangle),填充矩形(padding rectangle)和内容矩形(content rectangle)。盒子模型对四个矩形有详细的描述,如下图所示:

CSS_boxMode.png

边缘,边框宽度和填充属性默认为0。这样四个矩形(margin, border, padding和content)重合。

使用background-image属性,你可以为部件指定背景图片。默认地,背景图片只画在边框以内。背景图片不随部件大小改变而改变。提供一个随部件大小改变而改变的背景或皮肤,必须使用border-image。因为border-image属性提供了一个备选背景,所以并不需要再为部件指定一个背景图片。在两者都指定的情况下,border-image将画于background-image之上。


转载于:https://www.cnblogs.com/linuxAndMcu/p/11039691.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里P8大佬亲自教你!Android内存泄漏总结,看看这篇文章吧!

前言 这次去腾讯面试的是我大学同学,我们大学都是一学习,一起吃饭,一起洗脚,一起。。。 他们公司最近也裁员了,不过他是裁员前去的腾讯,不知道谁捞到他简历了,莫名就走了流程,他莫…

Sentinel在订单大量服务调用的应用场景

Sentinel译为“哨兵”,顾名思义,面对您后台的大量服务/微服务,前置一个哨兵,但面对大量请求时,让后台服务有序被调用,但某些服务的不可用时,采用服务熔断降级等措施,让系统仍能平稳运…

程序员深度学习!我想谈谈关于Android面试那些事,附赠课程+题库

想要成为一名优秀的Android开发,你需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~。 25%的面试官会在头5分钟内决定面试的结果60%的面试官会在头15分钟内决定面试的结果 一般来说,一场单面的时间在30分钟左右&…

MOSS 代替Spring Boot Admin 的服务治理工具

1.1 什么是服务治理 服务治理,我也称之为微服务治理,是指用来管理微服务的整个生命周期。包括应用的创建,服务名的规范,服务的上下线,服务的迁移,整个服务的生老病死等方方面面的治理。 1.2 Moss概述 Mo…

程序员经验分享:Android高级工程师系列学习路线介绍,面试必备

前言 曾听过很多人说Android学习很简单,做个App就上手了,工作机会多,毕业后也比较容易找工作。这种观点可能是很多Android开发者最开始入行的原因之一。 在工作初期,工作主要是按照业务需求实现App页面的功能,按照设…

算法题+JVM+自定义View,隔壁都馋哭了

反思 昨晚去北京大望路阿里面试, 产生了严重的挫败感, 羞愧难当. 比不得从大学就有目标有理想, 一直在为目标努力学习技术的同学, 在大学唯一能拿得出手的就是参加了电子设计大赛, 学了点嵌入式的知识. 毕业后开始做android, 说得好听点叫做项目, 实际上就是搬代码, 真正记到…

终于有人把安卓程序员必学知识点全整理出来了,BAT大厂面试总结

行业激烈变化时,恰恰是机会最多的时候 坦白讲,许多人骨子里害怕变化和竞争。 其实大可不必。 一来,怕也没用嘛。二来,变化越快,组合要素增加了,意味着新的工作机会越多。 就像传统媒体VS新媒体。 放在…

c#反混淆工具de4dot 一般混淆都可以解决

c#反混淆工具de4dot 一般混淆都可以解决 使用方法: 1、CMD 打开 De4Dot 所在文件夹 最好是以管理员身份运行CMD 2、输入 De4Dot C:\Users\muzigaiyu\Desktop\demo.exe 回车 成功后会在软件所在文件夹生成 demo-cleaned.exe 在用dotpeek 或者其他软件打开exe即可看…

想学IT的必看!今年Android面试必问的这些技术面,架构师必备技能

第一次观看我文章的朋友,可以关注、点赞、转发一下,每天分享各种干货技术和程序猿趣事 前言 职场的金三银四跳槽季又来了,不同的是今年比往年「冷」一些,形式更加严峻一些,大家多多少少可能都听到或看到一些信息&…

阿里P7大牛亲自教你!BAT这种大厂履历意味着什么?积累总结

金九银十过后各大网络平台都是各种面经分享,包括已收offer,或面试失败的都有,相信大部分人都拿到了自己心仪的大厂offer,不过也有没有少数没能进到自己内心向往的大厂而懊恼的,那么到底如何才能进大厂,该准…

启动mac版docker自带的k8s

最近准备好好学习下k8s,为了图方便,直接使用docker集成的k8s,但是网上找了一些教程但都没能一次性成功,只好自己从头跑一遍,顺手写个教程可以方便有类似需求的同学参考。 话不多说,直接上步骤。 1.下载doc…

yum安装mysql

在CentOS7中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。 1. 下载并安装MySQL官方的 Yum Repository 1[rootBrianZhu /]# wget -i -c http://dev.mysql.com…

springboot很多以来jar包是在外部当时候,如何打dockerfile到阿里云

首先保证springboot与各种jar包文件夹在同一目录 dockerfile如下内容 FROM frolvlad/alpine-oraclejdk8 VOLUME /usr/cloud ADD lib /lib/ ADD lib_attachment /lib_attachment/ ADD lib_bigdata /lib_bigdata/ ADD lib_bpm /lib_bpm/ ADD lib_deploy /lib_deploy/ ADD lib_el…

阿里P7大牛手把手教你!一眼就能看懂的Android自学手册,真香!

前言 曾听过很多人说Android学习很简单,做个App就上手了,工作机会多,毕业后也比较容易找工作。这种观点可能是很多Android开发者最开始入行的原因之一。 在工作初期,工作主要是按照业务需求实现App页面的功能,按照设…

【VScode】使用VScode 来写markdown时序图

准备工作在VScode中下载插件Markdown Preview Enhanced插件创建一个.md文件在VScode中打开文件,界面内点击右键可以看到Open preview to the side(还有很多方法外面都能搜到),可以进行实时预览效果开始markdown第一行主标题(次标题依次加#&am…

大项目之网上书城(八)——数据库大改添加图书

目录 大项目之网上书城(八)——数据库大改&添加图书主要改动1.数据库新增表代码2.数据库新增触发器3.其他对BookService和BookDao的修改代码4.addBook.jsp代码效果图5.AddNewBookServlet代码大项目之网上书城(八)——数据库大…

hping3工具DOS攻击实验

需要两台机器,一台扮演攻击源,另一做目标源。 攻击源地址:10.0.40.4 被攻击机器地址:10.0.40.246 2 被攻击的机器上安装tcpdump,tcpdump主要是用来抓包的,看看网络数据包是否到达。 $ yum install tcpdump -y 3 首先开启tcp…

腾讯T2亲自讲解!搞懂开源框架设计思想真的这么重要吗?系列篇

Java相关 无论什么级别的Android从业者,Java作为Android开发基础语言。不管是工作还是面试中,Java都是必考题。如果不懂Java的话,薪酬会非常吃亏(美团尤为重视Java基础) 详细介绍了Java泛型、注解、并发编程、数据传…

阿里P7亲自教你!我的头条面试经历分享,完整PDF

前言 转眼间,2020 年已过去一大半了,2020 年很难,各企业裁员的消息蛮多的,降职,不发年终奖等等。2020 年确实是艰难的一年。然而生活总是要继续,时间不给你丧的机会!如果我们能坚持下来&#x…

Java多线程 ——线程基础和锁锁锁

Java多线程(一) 一、线程的定义二、Synchronize线程同步三、偏向锁、自旋锁、重量级锁四、volatile关键字 4.1.普通变量运算的物理意义4.2.有无解决的方案4.3.volatile的几个特性(参考https://www.cnblogs.com/kubidemanong/p/9505944.html)五、Compare …