zoukankan      html  css  js  c++  java
  • QSS 样式表 (一)

    在开发应用程序时,往往对界面的美观有一定的要求。Qt 引入了 QSS 机制,使得界面的美化工作变的轻轻松松。嗯,QSS听着有点耳熟。是的,QSS的语法和CSS类似。在此做些总结。

    先来看一个简单的例子。

     1 #include <QtGui/QPushButton>
     2 #include <QtGui/QWidget>
     3 #include <QTextCodec>
     4 #include <QtGui/QHBoxLayout>
     5 #include <QtGui/QApplication>
     6 
     7 int main(int argc, char *argv[])
     8 {
     9     QTextCodec::setCodecForTr(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));
    10     QTextCodec::setCodecForLocale(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));
    11     QTextCodec::setCodecForCStrings(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));
    12 
    13     QApplication app(argc, argv);
    14 
    15     QWidget *pWidget = new QWidget;
    16     QPushButton *pBtn = new QPushButton;
    17     pBtn->setText(QObject::tr("我是一个按钮"));
    18     QHBoxLayout *pLayout = new QHBoxLayout;
    19 
    20     pLayout->addWidget(pBtn);
    21     pWidget->setLayout(pLayout);
    22     
    23     pWidget->show();
    24 
    25     return app.exec();
    26 }

    运行结果:

    不是很好看吧!让我们对以上代码稍做修改:

     1 #include <QtGui/QPushButton>
     2 #include <QtGui/QWidget>
     3 #include <QTextCodec>
     4 #include <QtGui/QHBoxLayout>
     5 #include <QtGui/QApplication>
     6 
     7 int main(int argc, char *argv[])
     8 {
     9     QTextCodec::setCodecForTr(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));
    10     QTextCodec::setCodecForLocale(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));
    11     QTextCodec::setCodecForCStrings(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));
    12 
    13     QApplication app(argc, argv);
    14 
    15     QWidget *pWidget = new QWidget;
    16     QPushButton *pBtn = new QPushButton;
    17     pBtn->setText(QObject::tr("我是一个按钮"));
    18 
    19     // 新添加的代码
    20     // 用于 QPushButton 的外观美化
    21     // 这句话就是QSS样式
    22     // QPushButton{ background-color: rgb(120,120, 120); color: rgb(0, 230, 230); }
    23     // 这个函数就是应用样式
    24     // setStyleSheet
    25     pBtn->setStyleSheet(QObject::tr("QPushButton{ background-color: rgb(120,120, 120); color: rgb(0, 230, 230); }"));
    26 
    27     QHBoxLayout *pLayout = new QHBoxLayout;
    28 
    29     pLayout->addWidget(pBtn);
    30     pWidget->setLayout(pLayout);
    31     
    32     pWidget->show();
    33 
    34     return app.exec();
    35 }

    以上两段代码比较,第二段代码增加了25行这一行代码,运行效果:

    可以看到按钮的外观发生了底色,按钮的文本颜色改变。这就是QSS的神奇之处。

    总结:QSS其实就是一段文本,这段文本里指定了控件的外观属性(如背景色、边框、文本)应该使用哪些属性值做改变。QSS 样式文本要想应用在 Qt 程序里,可以使用 setStyleSheet 函数。象本文对QPushButton应用样式,可以调用QPushButton的成员函数setStyleSheet。

  • 相关阅读:
    从零入门 Serverless | 教你 7 步快速构建 GitLab 持续集成环境
    4 个场景揭秘,如何低成本让容器化应用 Serverless 化?
    如何无缝迁移 SpringCloud/Dubbo 应用到 Serverless 架构
    精准容量、秒级弹性,压测工具 + SAE 方案如何完美突破传统大促难关?
    golang 实现最小二乘法拟合直线
    golang 实现两数组对应元素相除
    js 算数组平均值、最大值、最小值、偏差、标准差、中位数、数组从小打大排序、上四分位数、下四分位数
    ajax传数组后台GO语言接收
    python 画图中文显示问题
    python stats画正态分布、指数分布、对数正态分布的QQ图
  • 原文地址:https://www.cnblogs.com/RecreateBySelf/p/4230937.html
Copyright © 2011-2022 走看看