【Qt开发】StyleSheet使用总结

article/2025/10/14 15:14:34

概述

转眼七年过去了,我是一个彻底拥抱过MFC的人,记得老大的一个需求要把按钮做成圆角,并添加背景颜色,做前端html的可能认为很简单,然而放到MFC上那可真的是很...很麻烦的,自定义类继承Button ,新手估计还搞不定,怎么也有上百行代码,实在不友好,Qt诞生大大简化了这些工作,只需要使用QSS(Qt Style Sheet)就可以轻松做到,最近详细了解了QSS,做了个百度网盘的登录界面,整理好我会把源码放出来,供大家参考。

QSS语法

background-color:rgb(6, 168, 255);      背景色

color:red;                  字体颜色

border-radius:5px;              边框圆角半径

border:2px solid green;         边框2像素,实现,绿色

font:10pt;               字体大小10

设置QSS方法

方法一:UI界面设置

鼠标到按钮上右键,"改变样式表",在编辑样式表对话框中添加QSS样式。

方法二:程序添加

每一个控件都有setStyleSheet(const QString &styleSheet)方法,样式字符串直接传参即可,例:

ui.pushButton1->setStyleSheet("QPushButton{background-color: white;  color: rgb(100, 100, 100) ;}");

方法三:通过QSS文件添加

新建文件StyleSheet.qss文件,添加内容如下:

复制代码

/*按钮静止无操作样式*/
QPushButton 
{background-color:rgb(255,255,255); color:rgb(6,168,255); border:2px solid rgb(6,168,255); font-size:14px; border-radius:10px;
}/*鼠标悬停在按钮*/
QPushButton:hover
{background-color: rgb(212,243,255); color:rgb(6,168,255);border:2px solid rgb(6,168,255); border-radius:14px;
}/*鼠标按下按钮*/
QPushButton:pressed
{background-color: rgb(175,232,255); color:white; border:2px solid rgb(6,168,255); border-radius:14px;
}

复制代码

读取配置文件设置指定按钮样式:

复制代码

StyleDialog::StyleDialog(QWidget *parent): QDialog(parent)
{ui.setupUi(this);QString strStyle = ReadQssFile("StyleSheet.qss");ui.pushButton2->setStyleSheet(strStyle);
}StyleDialog::~StyleDialog()
{
}QString StyleDialog::ReadQssFile(const QString& filePath)
{QString strStyleSheet = "";QFile file(filePath);file.open(QFile::ReadOnly);if (file.isOpen()){strStyleSheet = QLatin1String(file.readAll());}return  strStyleSheet;
}

复制代码

实际项目中一般qss文件直接添加到资源里面,一起打包到EXE文件中,这样文件不会直接暴露给用户。

Selector

一个UI界面有很多控件,使用一个qss文件来指定样式时,可以使用Selector来分别设置控件的样式

1.属性覆盖,一个qss文件里,后面定义的style会覆盖先前的style。

2.同一行中多个类型需要用逗号分隔。

QPushButton, QLineEdit, QCheckBox
{background: color: black;
}

3.属性分类

例如:有6个PushButton控件,3个设置为样式一,另外三个设置为样式二

方法一:

设置前3个控件的whatsThis为style1,后三个控件为style2

修改StyleSheet.qss文件内容

复制代码

QPushButton[whatsThis="style1"]
{background-color: rgb(63,141,215);color:green;
}QPushButton[whatsThis="style2"]
{background-color: rgb(63,141,215);color:red;
}

复制代码

方法二:

直接在qss文件里指定object name,不推荐这种方式,6个控件需要些六遍,分别指定object name。

QPushButton#pushButton1
{background-color: rgb(63,141,215);color:red;
}

最后在程序的入口函数设置如下代码:

    QApplication a(argc, argv);StyleDialog styleDialog;a.setStyleSheet(styleDialog.ReadQssFile(":/qtlearn/Resources/StyleSheet.qss"));

 最后附上一张使用QSS技术仿的百度网盘界面:


http://chatgpt.dhexx.cn/article/euTYuEfC.shtml

相关文章

smartupload.jar实现文件上传,下载(附下载链接)

JavaWeb使用smartupload.jar实现文件上传&#xff0c;下载 1、先将smartupload.jar 导入到项目中 jar包下载地址&#xff1a; 点击去下载 2、上传页面的准备 注:(1)form标签中要添加enctype属性 (2)提交方式必须是post <html> <head><title>文件上传&…

利用SmartUpload组件实现文件上传与下载

创建Web项目SmartUpload 在WEB-INF目录里创建lib子目录&#xff0c;加入jspSmartUpload.jar 在web目录里创建上传子目录upload&#xff0c;用于存放上传文件 在web目录修改首页文件index.html 在web目录创建上传页面upload.html 在web目录里创建处理上传的页面do_upload.j…

smartupload下载

首先&#xff0c;很不幸的&#xff0c;今天是周一&#xff0c;所以今天要上课&#xff0c;但是很幸运的&#xff0c;早上没课&#xff0c;但是又不幸的早起习惯了&#xff0c;所以我说了很多废话来消磨时间&#xff0c; 上篇说了怎么用上smartupload来上传文件到服务器端&…

使用smartupload进行文件上传

关于文件上传的代码&#xff0c;只有百度一下都能找到一大堆。但是可惜大多数都使用的是jsp来处理上传&#xff0c;而使用servlet处理文件上传的文章是比较少的。但是不管是jsp还是servlet处理都会跳转但是这样就很难看了。这就要使用到js内嵌的框架了。这样页面看起来就不会跳…

SmartUpload组件实现文件上传

调试好几天的程序&#xff0c;原来是软件版本的原因&#xff0c;我靠&#xff0c;能说脏话吗&#xff1f;好吧&#xff0c;当然这个过程虽然痛苦&#xff0c;但程序猿要学会享受同bug战斗的乐趣。 实现过程&#xff1a; &#xff11;、将下载好的smartupload.jar文件导入项目l…

SmartUpload使用和简介

原文地址为&#xff1a; SmartUpload使用和简介 用以下代码生成文件名即可 1 package info.haowei.util; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Date; 5 import java.util.Random; 6 7 public class IPTimeStamp { 8 9 10 private SimpleDat…

SmartUpload应用

首先&#xff0c;在讲SmartUpload应用前&#xff0c;我讲一个简单实用的文件编辑器&#xff08;编辑器可以调节字体大小、样式、颜色以及插入表情图标等功能&#xff09;。 文件编辑器——如图所示&#xff1a;1-1 设置文件编辑器步骤&#xff1a; 1、复制fckeditor包到项目。…

smartupload 的简单使用(上传)

今天。。。省略一万字&#xff0c;反正恨死隔壁宿舍的老王&#xff0c;妈蛋&#xff0c;把我电脑老虎机的分数都输光了。。。。天啥的。。省略一万字 最近开始学习javaweb&#xff0c;想了想&#xff0c;下载还有上传是两个必须要学会的功能&#xff0c;所以就开始学习 学习j…

SmartUpload综合

实现文件的上传与下载&#xff0c;可以使用Java的I/O流的类来实现&#xff0c;也可以使用专业的上传、下载组件。这些组件提供了现成的类&#xff0c;程序员只需调用这些类中的方法即可实现文件的上传与下载。本章将向读者介绍如何应用jspSmartUpload组件实现文件的上传与下载。…

SmartUpload文件上传

准备工作&#xff1a;在eclipse中创建网页项目&#xff0c;再添加服务器&#xff0c;双击打开服务器&#xff0c;然后导入jar包 选择路径&#xff0c;指定你想发送的路径。然后点击服务器&#xff0c;右键添加项目&#xff0c;点击start之后准备工作就完成了 操作流程 创建一个…

jsp——SmartUpload上传下载

SmartUpload 简介 SmartUpload组件是www.jspsmart.com网站开发的一套上传组件&#xff0c;它使用简单&#xff0c;方便。有以下几个特点&#xff1a; 使用简单。在JSP中仅仅书写三五行java代码就可以搞定文件的上传或下载。 能全程控制上传。利用SmartUpload组件提供的对象及其…

应用程序与驱动程序交互函数DeviceIoControl详解

这种通信方式&#xff0c;就是驱动程序和应用程序自定义一种IO控制码&#xff0c;然后调用DeviceIoControl函数&#xff0c;IO管理器会产生一个MajorFunction 为IRP_MJ_DEVICE_CONTROL&#xff08;DeviceIoControl函数会产生此IRP&#xff09;&#xff0c;MinorFunction 为自己…

QT(C++)DeviceIoControl()函数的相关使用

Microsoft官网中有这个函数的介绍&#xff0c;对&#xff0c;仅仅就是介绍&#xff0c;有时候官网的查询结果也就只能看看…… 在我写过的一个软件中&#xff0c;我曾经多次使用该函数获取相关结果&#xff0c;现将我的使用经验分享给大家&#xff01; DeviceIoControl()函数将…

应用程序与驱动程序通信 DeviceIoControl

本文为转载&#xff0c;参考链接地址 https://blog.csdn.net/li_wen01/article/details/80137566 https://www.cnblogs.com/lsh123/p/7354573.html DeviceIoControl 将控制代码直接发送到指定的设备驱动程序&#xff0c;使相应的设备执行相应的操作。 这种通信方式&#xff…

IO设备控制操作--DeviceIoControl

1.除了ReadFile和WirteFile以外&#xff0c;应用程序还可以通过另外一个API DeviceIoControl 操作设备。DeviceIoControl内部会使操作系统创建一个IRP_MJ_DEVICE_CONTROL类型的IRP&#xff0c;然后操作系统会将这个IRP转发到派遣函数中。 2.I/O控制码&#xff08;IOCTL&#xf…

DeviceIoControl获取硬盘信息

参考&#xff1a;DeviceIoControl 函数详细解析 BOOL WINAPI DeviceIoControl(_In_ HANDLE hDevice,_In_ DWORD dwIoControlCode,_In_opt_ LPVOID lpInBuffer,_In_ DWORD nInBufferSize,_Out_opt_ LPVOID lpOutBuf…

windows driver - DeviceIoControl 用法

原文地址&#xff1a;https://www.cnblogs.com/lsh123/p/7354573.html 之前写过一篇关于通过DeviceIoControl函数来使应用程序与驱动程序通信的博客&#xff0c;这次再通过这个完整的代码来简要疏通总结一下。 这种通信方式&#xff0c;就是驱动程序和应用程序自定义一种IO控制…

@ControllerAdvice 用法

ControllerAdvice 用法 顾名思义&#xff0c;ControllerAdvice就是Controller 的增强版。ControllerAdvice主要用来处理全局数据&#xff0c;一般搭配ExceptionHandler、ModelAttribute以及InitBinder使用。 全局异常处理 ControllerAdvice最常见的使用场景就是全局异常处理…

驱动开发:应用DeviceIoContro模板精讲

在笔者上一篇文章《驱动开发&#xff1a;应用DeviceIoContro开发模板》简单为大家介绍了如何使用DeviceIoContro模板快速创建一个驱动开发通信案例&#xff0c;但是该案例过于简单也无法独立加载运行&#xff0c;本章将继续延申这个知识点&#xff0c;通过封装一套标准通用模板…

驱动开发:应用DeviceIoContro开发模板

内核中执行代码后需要将结果动态显示给应用层的用户&#xff0c;DeviceIoControl 是直接发送控制代码到指定的设备驱动程序&#xff0c;使相应的移动设备以执行相应的操作的函数&#xff0c;如下代码是一个经典的驱动开发模板框架&#xff0c;在开发经典驱动时会用到的一个通用…