01_1_Qt工程实践_Qt样式表Qss(什么是QSS;基本语法;setStyleSheet函数;样式表的属性值;利用QtCreate实现样式切换;样式表实现皮肤改变实例)

这篇具有很好参考价值的文章主要介绍了01_1_Qt工程实践_Qt样式表Qss(什么是QSS;基本语法;setStyleSheet函数;样式表的属性值;利用QtCreate实现样式切换;样式表实现皮肤改变实例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本篇介绍什么是样式表,讨论如何使用Qt样式表Qss修改应用程序外观,并通过实例进行讲解。

了解HTML的同学都知道,一般在HTML中我们把样式表叫做CSS,在Qt中我们称之为QSS。QSS和CSS并不完全等同,语法完全类似,定义上存在一些差别。

QSS是Qt程序界面中用来设置控件的背景图片、大小、字体颜色、字体类型、按钮状态变化等属性,用于美化UI界面。实现界面和程序的分离,快速切换皮肤。
QSS最大的优点就是简单便捷,我们可以通过它快速实现应用程序的外观界面。

QPushButton {color: red} //代表QPushButton 颜色为红色

2)几个选择器可以指定相同的声明,使用逗号“,”来分隔选择器

 //代表QPushButton ,QLineEdit,QComboBox 颜色为红色
QPushButton,QLineEdit,QComboBox  {color: red}

3)声明部分的规则有多个属性值时包含在花括号{}中,以分号;分隔,属性之间在QSS之间是不区分大小写的

QPushButton {color: red;background-color:white;}

Qt中设置样式表最主要的函数为setStyleSheet

通过实例来介绍如何去设置Qt的样式表,
1)新建工程
qss,# Qt工程实践,qt,ui,开发语言
2)拉入一个按钮,此时编译运行之后,按下按钮其字体和颜色都是没有发生变化的。
qss,# Qt工程实践,qt,ui,开发语言
qss,# Qt工程实践,qt,ui,开发语言
3)通过样式表使得按下按钮后其字体和颜色发生变化。

(1)修改按钮中字体颜色
ui->pushButton->setStyleSheet(QString("QPushButton{color:rgb(255,0,0)}"));实现按钮中的字体显示为红色

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->pushButton->setStyleSheet(QString("QPushButton{color:rgb(255,0,0)}"));
}

运行结果:
qss,# Qt工程实践,qt,ui,开发语言
(2)设置按钮按下后的颜色变化
以下代码中:QPushButton:pressed表示按钮按下后,颜色为background-color:rgb(200,200,200);border-style:inset;表示内边框;color:rgb(0,255,0);字体颜色为color:rgb(0,255,0);,其中“\”代表本行写不下,下行仍为同一行。

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->pushButton->setStyleSheet(QString("QPushButton:pressed{ \
                                          background-color:rgb(200,200,200);\
                                          border-style:inset;\
                                          color:rgb(0,255,0);\
                                          }\
                                          QPushButton{color:rgb(255,0,0)}"));
}

运行结果:未按下按钮结果与上步一致,按下后字体颜色为绿色
qss,# Qt工程实践,qt,ui,开发语言

上述的方法是使用setStyleSheet 函数实现QSS的方法,下来将会先介绍样式表的属性指向,然后利用QtCreate实现上述内容,最终探讨两种实现方法的区别。

以下属性值熟悉有什么内容即可,在使用时再去具体查询使用
1)QSS文本属性
qss,# Qt工程实践,qt,ui,开发语言
2)QSS背景属性
qss,# Qt工程实践,qt,ui,开发语言
3)QSS边框属性
qss,# Qt工程实践,qt,ui,开发语言
4)QSS Box属性
我们将控件的一个区域称为Box,这个Box的内容如果溢出了如何处理,均使用Box属性进行设置
qss,# Qt工程实践,qt,ui,开发语言
5)QSS 字体属性
qss,# Qt工程实践,qt,ui,开发语言
6)QSS 外边框属性
控件之间的间距可以使用外边框属性设置
qss,# Qt工程实践,qt,ui,开发语言
7)QSS 内边框属性
qss,# Qt工程实践,qt,ui,开发语言
8)QSS 位置属性
qss,# Qt工程实践,qt,ui,开发语言

#if 0
    ui->pushButton->setStyleSheet(QString("QPushButton:pressed{ \
                                          background-color:rgb(200,200,200);\
                                          border-style:inset;\
                                          color:rgb(0,255,0);\
                                          }\
                                          QPushButton{color:rgb(255,0,0)}"));
 #endif

2)在UI中选择按钮,右键选择“改变样式表”,将样式表中设置的内容粘贴至“编辑样式表”中
qss,# Qt工程实践,qt,ui,开发语言
qss,# Qt工程实践,qt,ui,开发语言
运行之后得到的效果与使用setStyleSheet函数设置样式表一样

“编译输出”位置查看
qss,# Qt工程实践,qt,ui,开发语言
UI文件可以通过uic.exe来生成ui_widget.h,通过以下的构造函数中的ui->setupUi(this);加载界面

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
 }

ui->setupUi(this);其实就是在ui_widget.h中,代开ui_widget.h进行查看
qss,# Qt工程实践,qt,ui,开发语言
对应内容如下:

#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_Widget
{
public:
    QPushButton *pushButton;

    void setupUi(QWidget *Widget)
    {
        if (Widget->objectName().isEmpty())
            Widget->setObjectName(QStringLiteral("Widget"));
        Widget->resize(475, 384);
        pushButton = new QPushButton(Widget);
        pushButton->setObjectName(QStringLiteral("pushButton"));
        pushButton->setGeometry(QRect(150, 160, 112, 34));
        pushButton->setStyleSheet(QLatin1String("QPushButton:pressed{ background-color:rgb(200,200,200);\n"
"                     border-style:inset;\n"
"                     color:rgb(0,255,0);\n"
"}\n"
"QPushButton{color:rgb(255,0,0)}"));

        retranslateUi(Widget);

        QMetaObject::connectSlotsByName(Widget);
    } // setupUi

    void retranslateUi(QWidget *Widget)
    {
        Widget->setWindowTitle(QApplication::translate("Widget", "Widget", Q_NULLPTR));
        pushButton->setText(QApplication::translate("Widget", "PushButton", Q_NULLPTR));
    } // retranslateUi

};

namespace Ui {
    class Widget: public Ui_Widget {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_WIDGET_H

可以看到工具自动生成代码如下,是与我们自己写的代码实际上是一样的。

        pushButton->setStyleSheet(QLatin1String("QPushButton:pressed{ background-color:rgb(200,200,200);\n"
"                     border-style:inset;\n"
"                     color:rgb(0,255,0);\n"
"}\n"
"QPushButton{color:rgb(255,0,0)}"));

可以看出两种方法都是使用setStyleSheet实现的,原理上是一样的

样式表除了上述作用,最大的作用是改变应用的皮肤
1)起始页面的qss文件的加载
qss,# Qt工程实践,qt,ui,开发语言

qss,# Qt工程实践,qt,ui,开发语言

2)通过按钮实现不同样式的切换
实现方法,通过按钮实现不同样式表的加载
qss,# Qt工程实践,qt,ui,开发语言
qss,# Qt工程实践,qt,ui,开发语言
qss,# Qt工程实践,qt,ui,开发语言
qss,# Qt工程实践,qt,ui,开发语言
9.学习视频地址:
【Qt学习系列】11.Qt样式表Qss
【Qt学习系列】11.Qt样式表Qss(2)文章来源地址https://www.toymoban.com/news/detail-594734.html

到了这里,关于01_1_Qt工程实践_Qt样式表Qss(什么是QSS;基本语法;setStyleSheet函数;样式表的属性值;利用QtCreate实现样式切换;样式表实现皮肤改变实例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT界面设计:深入理解QSS样式表设计

    本文详细介绍了QT界面设计中的QSS样式技术,包括QSS样式表的语法、用法、selector设置以及属性列表等内容,帮助你提升审美,打造出令人羡慕的软件界面。

    2024年02月13日
    浏览(49)
  • [QT编程系列-39]:用户界面UI - 样式表QSS与样式文件快速入门

    目录 1. 概述 2. CSS 3. QSS示例 4. QT样式表文件使用方法与步骤 5. QT内置样式 6. QT常见基本样式 Qt提供了一种称为Qt样式表(Qt Style Sheets)的机制,可以用于 自定义和美化Qt应用程序的用户界面(UI) 。 使用Qt样式表,你可以通过类似 CSS 的语法来定义UI元素的外观和布局,包括颜

    2024年02月04日
    浏览(49)
  • 【QT】史上最全最详细的QSS样式表用法及用例说明

    Qt样式表支持各种属性、伪状态和子控件,可以自定义小部件的外观。 Widget 如何设置 QWidget 只支持 background , background-clip 和 background-origin 属性。 如果你继承于QWidget,那么你需要为你自定义的QWidget提供一个paintEvent,如下所示: 如果没有进行QSS样式表设置,上面的代码就是一

    2024年02月03日
    浏览(53)
  • qss中样式表不生效

    qt问题记录: 1.widget是被提升的窗口(被提升为Form),我设置了样式表后它的效果如下图,但是实际跑的时候它的样式表没有显示。    当我取消提升后 (让它变成普通的QWidget后) ,它就正常显现了。   我突然想到,它不是没有显现,而是 被上面的窗口覆盖掉了 。 2.  这是

    2024年02月08日
    浏览(48)
  • C++Qt QSS要注意的坑

    qss源自css,相当于css的一个子集,主要支持的是css2标准,很多网上的css3的标准的写法在qss这里是不生效的,所以不要大惊小怪。 qss也不是完全支持所有的css2,比如text-align官方文档就有说明,只支持 QPushButton and QProgressBar,务必看清楚。 有时候偷懒直接来一句 *{xxx},你会发

    2024年02月10日
    浏览(39)
  • 【Qt笔记】QSS中常用的子控件

    子控件名称 说明 ::branch QTreeView的分支指示器 ::chunk QProgressBar的进度显示块 ::close-button QDockWidgte或QTabBar页面的关闭按钮 ::down-arrow QComboBox、QHeaderView(排序指示器)、QScrollBar或QSpinBox的下拉箭头 ::down-button QScrollBar或QSpinBox的向下按钮 ::float-button QComboBox的下拉按钮 ::groove QSlider的凹

    2024年02月21日
    浏览(46)
  • Qt中QSS文件的导入与使用-书写格式(笔记)

    想要美化Qt界面,就需要手动设定控件的qss样式 如果是直接在cpp文件中设定样式,则使用setStyleSheet(“xxx”)函数,但控件一多,你的代码界面就会变成这样 为了方便源码的阅读,这时要么考虑使用宏定义设定重复的qss,要么考虑使用qss文件 QSS文件加载 QSS文件书写格式 qss文件

    2024年02月10日
    浏览(45)
  • 【QT入门】 自定义标题栏界面qss美化+按钮功能实现

    往期回顾: 【QT入门】 鼠标按下和移动事件实现无边框窗口拖动-CSDN博客 【QT入门】 设计实现无边框窗口拉伸的公用类-CSDN博客 【QT入门】对无边框窗口自定义标题栏并实现拖动和拉伸效果-CSDN博客 1、实现悬浮样式改变 当鼠标悬浮到该按钮上时,样式会有一定改变。 2、添加

    2024年04月10日
    浏览(73)
  • 路由器中的QSS是什么意思 有什么功能

    QSS又称快速安全设置,通过按下无线路由和无线网卡上的QSS按钮,即可自动建立WPA2级别的安全连接,无需在路由器或网卡管理软件的界面上进行繁琐的设置,大大简化无线安全设置的操作。普联(tp-link)公司带QSS功能的产品有WR941N,WR841N,WN951N,WN910N,WN827N,WN851N。 在WR8

    2024年02月06日
    浏览(48)
  • QT控件通过qss设置子控件的对齐方式、大小自适应等

    一些复杂控件,是有子控件的,每个子控件,都可以通过qss的双冒号选择器来选中,进行独特的样式定义。很多控件都有子控件,太多了,后面单独写一篇文章来介绍各个控件的子控件。这里就随便来几个例子 例如下拉列表控件,右边有个下拉按钮(QComboBox::drop-down)就是子

    2024年02月15日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包