首页 > 其他分享 >Vscode实现应用qss样式表

Vscode实现应用qss样式表

时间:2024-12-23 21:31:57浏览次数:3  
标签:文件 style img Vscode qss ui 样式表 QLabel

qss简介

qss(Qt Style Sheets)是一种基于CSS的样式语言,用于描述用户界面元素的外观和感觉。qss可以让用户在不修改代码的情况下,轻松地自定义应用程序的外观。

其语法基本如下:

objectName{
  property: value;
}

其中,objectName是要设置样式的对象名,property是要设置的属性,value是属性的值。比如,要设置按钮的背景色为红色,可以这样写:

QPushButton{
  background-color: red;
}

若想对同一控件设置多套样式,可以指定姓名

QLabel#label1{
    background-color: blue;
}
QLabel#label2{
    background-color: green;
}

在程序中使用setObjectName();方法设置控件名称对应到qss中的名称即可使用对应的样式。

QLabel *label = new QLabel(this);
label->setObjectName("label1"); // 此label背景色为蓝色
QLabel *label2 = new QLabel(this);
label2->setObjectName("label2"); // 此label背景色为绿色

对于一些拥有不同状态的控件,如按钮在普通状态以下按下状态,以及鼠标悬停状态等,可以用不同的qss样式表实现不同状态的样式。

QPushButton:pressed{
    background-color: green;
}
// 按下按钮时改变背景颜色为绿色

QPushButton:hover{
    background-color: yellow;
}
// 鼠标悬停在按钮上时改变背景颜色为黄色

可以混合使用,比如:

QPushButton#btn1:pressed{
    background-color: green;
}
// 按下btn1按钮时改变背景颜色为绿色

qrc文件

对于样式表,可以使用一个后缀为.qrc的文件来管理.qss以及编写时所用的图片资源。其实质上就是一个xml文件,里面可以包含多个<file>标签,每个标签对应一个资源文件。

<RCC>
    <qresource prefix="/">
        <file>ui/img/img.png</file>
        <file>ui/img/close.png</file>
        <file>ui/img/min.png</file>
        <file>ui/img/max.png</file>
        <file>ui/img/R.svg</file>
        <file>ui/style/style.qss</file>
    </qresource>
</RCC>

其中<RCC>表示该文件为资源文件集合,<qresource>表示资源文件,prefix属性表示资源文件的前缀,这里设置为/表示资源文件位于程序根目录下。<file>标签表示资源文件名,这里可以指定多个资源文件。

注意,这里使用prefix设置的路径是虚拟路径。在下面的<file> </file>中设置的资源文件的路径应当是相对于.qrc文件的路径。这样设置后,在程序中可以通过如下方式获取资源文件:

QFile file(":/ui/style/style.qss");
/*通过":"表示使用虚拟路径访问文件*/

倘若更改prefix如下

<qresource prefix="/source">

则在程序中获取资源文件时,应当使用如下方式:

QFile file(":/source/ui/style/style.qss");
/*通过":"表示使用虚拟路径访问文件*/

也就是说这里定义的虚拟路径不需要它在物理地址中存在,即可使用Qt这种资源管理机制来管理资源文件。方便的实现资源的分组、共享以及版本控制。

设置好.qrc文件后,在程序中可以用如下方式获取资源文件中整合的文件:

QFile file(":/ui/style/style.qss");
/*通过":"表示资源文件*/

qss文件中,也可以使用这种方法来引用资源文件中的资源:

QLabel{
    background-image: url(":/ui/img/img.png");
}

Vscode应用qss样式表

在扩展安装界面安装QSSEditor插件,这样可以提供qss相关的代码补全以及高亮显示功能。

在写qss时,可能输出以下,大概是由于这个插件可以联动QtDesigner来实时显示样式。这方面我也不太会。不影响对qss代码的补全高亮。
image

建立文件树如下的目录结构:

├── ui
│   ├── img
│   │   ├── close.png
│   │   ├── img.png
│   │   ├── max.png
│   │   ├── min.png
│   │   └── R.svg
│   └── style
│       └── style.qss
└── ui.qrc

名称任意取。其中ui.qrc文件的要求上面已经说明。若要使用该文件,需要修改CMakeLists.txt文件,添加如下内容:

find_package(Qt5 REQUIRED COMPONENTS Core Widgets REQUIRED)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON) # RCC编译器将qrc文件编译为cpp文件
set(CMAKE AUTOUIC ON)
# 注意 : 要想使用qt5_add_resources,必须先find_package到Qt的路径或者手动指定QT_DIR
set(QT_SOURCE_FILE ui.qrc) # 将资源文件放到工程目录下,该部分会由RCC编译器预编译为cpp文件

# 添加资源文件
qt5_add_resources(QT_RESOURCES ${QT_SOURCE_FILE})

# 添加源文件
set(SOURCE_FILES main.cpp)

# 生成可执行文件
add_executable(main ${SOURCE_FILES} ${QT_RESOURCES})

这样在主程序中就可以通过Qt的资源管理机制来访问资源文件了。

要想应用qss样式表,在主程序中调用setStyleSheet()方法即可。

#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QFile file(":/ui/style/style.qss"); # 读取样式表文件
    if (file.open(QFile::ReadOnly))
    {
        QTextStream stream(&file);
        QString styleSheet = stream.readAll();
        app.setStyleSheet(styleSheet);
    }
    MainWindow win;
    win.show();
    return app.exec();
}

当然,在Qt中,每个控件都有属于自己的setStyleSheet()接口用于单独设置样式,用起来也是很简单粗暴,其参数是一个qss样式表字符串。

QLabel *label = new QLabel(this);
/*设置label的背景色为红色*/
label->setStyleSheet("background-color: red;");
/*当然下面这种写法也ok*/
label->setStyleSheet("QLabel{background-color: red;}");

标签:文件,style,img,Vscode,qss,ui,样式表,QLabel
From: https://www.cnblogs.com/CrescentWind/p/18625054

相关文章

  • VScode + cmake编写Qt程序
    本机环境Ubuntu20.04Qt5.12.81.安装Vscode直接在官网下载对应的deb包安装即可。下载后在deb包所在目录执行如下命令安装deb包。sudodpkg-i安装包名.deb然后在应用程序中应该就有了Vscode的图标了。2.安装cmake与gccg++先安装cmakesudoapt-getinstall......
  • 【QSS样式表 - ⑥】:QPushButton控件样式
    文章目录QPushBUtton控件样式QSS示例QPushBUtton控件样式常用子控件常用伪状态QSS示例代码:QPushButton{ background-color:#99B5D1; color:white; font-weigth:bold; border-radius:20px;}QPushButton:hover{ background-color:red;}QPushBu......
  • 【VScode】第三方GPT编程工具-CodeMoss安装教程
    一、CodeMoss是什么?CodeMoss是一款集编程、学习和办公于一体的高效工具。它兼容多种主流平台,包括VSCode、IDER、Chrome插件、Web和APP等,支持插件安装,尤其在VSCode和IDER上的表现尤为出色。无论你是编程新手还是资深开发者,CodeMoss都能为你提供强大的支持。二、CodeMoss的......
  • VScode统计代码行数
    在VSCode中统计代码行数可以通过安装和使用特定的插件或命令行工具来实现。‌‌使用插件统计代码行数‌:‌VSCodeCounter‌:通过VSCode的扩展市场安装“VSCodeCounter”插件,安装后可以使用快捷键Shift+Ctrl+P打开命令输入栏,输入“VSCodeCounter:Countlinesindirectory”......
  • 离开Jetbrains拥抱VsCode: 离开大便拥抱大便
    为什么要离开Jetbrains原因很简单,Jetbrains对于AICoding的支持非常烂其中大部分的AICoding都是通过插件来实现的,但是体验非常不好,而且开发难度比之Vscode高了许多,很多同时支持Jetbrains以及VsCode的插件,更新速度有巨大的区别例如Continue,VsCode上可以做到周更,......
  • 离开Jetbrains拥抱VsCode: 离开大便拥抱大便
    为什么要离开Jetbrains原因很简单,Jetbrains对于AICoding的支持非常烂其中大部分的AICoding都是通过插件来实现的,但是体验非常不好,而且开发难度比之Vscode高了许多,很多同时支持Jetbrains以及VsCode的插件,更新速度有巨大的区别例如Continue,VsCode上可以做到周更,......
  • vscode操作技巧
    代码着色glsl、hlsl、fx、ush、usf着色器  安装ShaderlanguagessupportforVSCode插件 对于ue4的ush、usf文件,需要配置其使用hlsl的着色规则着色成功后的效果 打开文件时,缺省添加成Pin类型的Tab标签(非斜体) 改变当前文件时,左边的ExplorerPane不要自动Activ......
  • QT网盘笔记(日志,qss,加密)
    前言:本章为本人在学习QT网盘时学到的知识,在此记录。一、QT日志1、前因(1)网盘服务端需要记录每一个登陆者登录的时间,账号名,在遇到除操作错误的错误时候会统计到日志中,同时客户的意见反馈也写入其中。(2)加上互斥锁防止多线程写入时混乱。2、互斥锁    (1)定义:在多......
  • vscode不同项目使用不同插件
    转载请注明出处:小帆的帆的博客在使用vscode开发不同项目时可能会用到不同的插件。手动管理不够优雅,本文介绍使用Profiles的方式的来管理不同项目的插件。手动管理不同项目的插件本来vscode安装了有三个插件这时需要新建一个项目,新安装了三个插件。但是新老插件之间存在......
  • vscode已经下载好中文简体的插件 但是没效果——如何VScode 改成中文界面
    有时候我们vscode已经下载好中文简体的插件,但是通过vueinitwebpackxxx创建的vue项目用vscode打开后还是会切换回英文界面。这时候需要做如下操作:1.Ctrl+Shift+P(command+shift+P)输入display选择ConfiguredisplayLanguage2.选择zh-cn这时候vscode会提示需要重启,点击restart......