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

先来看一个简单的例子。

 #include <QtGui/QPushButton>
#include <QtGui/QWidget>
#include <QTextCodec>
#include <QtGui/QHBoxLayout>
#include <QtGui/QApplication> int main(int argc, char *argv[])
{
QTextCodec::setCodecForTr(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));
QTextCodec::setCodecForLocale(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName(QTextCodec::codecForLocale()->name())); QApplication app(argc, argv); QWidget *pWidget = new QWidget;
QPushButton *pBtn = new QPushButton;
pBtn->setText(QObject::tr("我是一个按钮"));
QHBoxLayout *pLayout = new QHBoxLayout; pLayout->addWidget(pBtn);
pWidget->setLayout(pLayout); pWidget->show(); return app.exec();
}

运行结果:

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

 #include <QtGui/QPushButton>
#include <QtGui/QWidget>
#include <QTextCodec>
#include <QtGui/QHBoxLayout>
#include <QtGui/QApplication> int main(int argc, char *argv[])
{
QTextCodec::setCodecForTr(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));
QTextCodec::setCodecForLocale(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName(QTextCodec::codecForLocale()->name())); QApplication app(argc, argv); QWidget *pWidget = new QWidget;
QPushButton *pBtn = new QPushButton;
pBtn->setText(QObject::tr("我是一个按钮")); // 新添加的代码
// 用于 QPushButton 的外观美化
// 这句话就是QSS样式
// QPushButton{ background-color: rgb(120,120, 120); color: rgb(0, 230, 230); }
// 这个函数就是应用样式
// setStyleSheet
pBtn->setStyleSheet(QObject::tr("QPushButton{ background-color: rgb(120,120, 120); color: rgb(0, 230, 230); }")); QHBoxLayout *pLayout = new QHBoxLayout; pLayout->addWidget(pBtn);
pWidget->setLayout(pLayout); pWidget->show(); return app.exec();
}

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

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

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

QSS 样式表 (一)的更多相关文章

  1. Qt系统对话框中文化及应用程序实现重启及使用QSS样式表文件及使用程序启动界面

    一.应用程序中文化 1).Qt安装目录下有一个目录translations/,在此目录下有qt_zh_CN.ts和 qt_zh_CN.qm把它们拷贝到你的工程目录下. 2).在main函数加入下列代码 ...

  2. GUI学习之三十四——QSS样式表

    今天是一个大课题:QSS样式表 一.概念: QSS是Qt Style Sheet——Qt样式表,是用来自定义控件外观的一种机制;可以把他类比成CSS,但是不及其功能强大. 二.使用: 我们做一个模板, ...

  3. QT源码剖析之QSS样式表

    1. "QApplication::setStyleSheet()"设置样式表: 1. 创建新的样式表. 2. 设置新的样式. void QApplication::setStyl ...

  4. QSS样式表之PS黑色风格+白色风格+淡蓝色风格(开源)

    用QUI皮肤生成器制作皮肤,基本上不超过一分钟就可以生成一套自己想要的皮肤,只要设置八种颜色即可.本人非常喜欢这套黑色风格样式皮肤,特意分享出来,下载地址:https://download.csdn. ...

  5. Qss 样式表的尝试

    QLineEdit{ border:1px solid #137eb6; padding:2px; background-color:#F5F5F5; } QToolTip{ border:1px s ...

  6. 【转】QT样式表 (QStyleSheet)

    作者:刘旭晖 Raymond 转载请注明出处Email:colorant@163.comBLOG:http://blog.csdn.net/colorant/ 除了子类化Style类,使用QT样式表( ...

  7. Qt样式表使用注意项

    Qt样式表使用注意项 <1>.StyleSheet的使用StyleSheet文件的默认后缀名为qss,可以通过命令行参数-stylesheet filename.qss来设置样式表,也可以 ...

  8. Qt样式表的使用

    Qt中可以灵活的使用层叠样式表(CSS),其语法和CSS很相似.因为HTML CSS的灵活性,所以可以很方便的为QT界面设计自己需要的外观.除了子类化Style类,使用QT样式表(QStyleShee ...

  9. Qt 之 QSS(样式表语法)

    https://blog.csdn.net/liang19890820/article/details/51691212 简述 Qt样式表(以下统称QSS)的术语和语法规则几乎和CSS相同.如果你熟悉 ...

随机推荐

  1. 【Nutch基础教程之七】Nutch的2种运行模式:local及deploy

    在对nutch源代码运行ant runtime后,会创建一个runtime的目录,在runtime目录下有deploy和local 2个目录. [jediael@jediael runtime]$ l ...

  2. Office2007设置无格式粘贴

    打开Word 2007,按Alt+F11.这时会出现一个Visual Basic编辑窗口.如图所示:   上图中左上方,鼠标右击Normal→插入→模块,出现下图:     双击"模块1&q ...

  3. 关于box-sizing

    http://www.zhangxinxu.com/css3/css3-box-sizing.php box-sizing:border-box; -o-box-sizing:border-box; ...

  4. hdu 1111 Secret Code

    http://acm.hdu.edu.cn/showproblem.php?pid=1111 复数除法: #include <cstdio> #include <cstring> ...

  5. Qt带进度条的启动界面(继承QSplashScreen,然后使用定时器)

    通过继承QSplashScreen类,得到CMySplashScreen类,然后在CMySplashScreen中定义QProgressBar变量,该变量以CMySplashScreen为父类,这样就 ...

  6. Linux备份与恢复

    确定要备份的内容 在备份和还原系统时,Linux 基于文件的性质成了一个极大的优点.在 Windows 系统中,注册表与系统是非常相关的.配置和软件安装不仅仅是将文件放到系统上.因此,还原系统就需要有 ...

  7. ActionBar Fragment运用最佳实践

    ActionBar Fragment运用最佳实践  

  8. The end of other

    The end of other For language training our Robots want to learn about suffixes. In this task, you ar ...

  9. hadoop 1.2.1 安装步骤 伪分布式

    最近在系统的学习hadoop 课程第一步是安装hadoop1.x,具体安装步骤如下: 一.系统安装 本文使用centos6.5安装,具体安装步骤省略 二.jdk安装 下载jdk1.7.0_51解压,在 ...

  10. c++ 友元类

    一.友元类相关概念 要将私有成员数据或函数暴露给另一个类,必须将后者声明为友元类. 注意三点: (1)友元关系不能传递 (2)友元关系不能继承 (3)友元关系不能互通