http://blog.csdn.net/liang19890820/article/details/51698536

版权声明:进步始于交流,收获源于分享!纯正开源之美,有趣、好玩、靠谱。。。作者:一去丶二三里 博客地址:http://blog.csdn.net/liang19890820

 

目录(?)[+]

 

简述

Qt之QSS(样式表语法)一节讲过关于“设置对象属性”的用法,里面有一条很重要的原则是:任何可被识别的Q_PROPERTY都可以使用qproperty-语法设置。

这里需要对Qt属性系统有一定的了解,详见:Qt之属性系统

属性

下面我们以QLabel为例,讲解如何在QSS中使用属性。

class Q_WIDGETS_EXPORT QLabel : public QFrame
{
...
Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap)
Q_PROPERTY(bool scaledContents READ hasScaledContents WRITE setScaledContents)
...
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

可以看到,其中pixmap、scaledContents等属性均可使用,这样我们就可以通过QSS按照qproperty-<property name>语法的方式设置标签的图标和适应性了。

但是如果要设置标签的大小该怎么办呢?因为我们并没有发现与width、height、size相关的属性。难道真的束手无策?当然不是了,我们可以继续向上级联查找基类,这样,可以很容易的发现QWidget中有需要的属性:

class Q_WIDGETS_EXPORT QWidget : public QObject, public QPaintDevice
{
...
Q_PROPERTY(QSize minimumSize READ minimumSize WRITE setMinimumSize)
Q_PROPERTY(QSize maximumSize READ maximumSize WRITE setMaximumSize)
...
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

实例

通过以上的分析,我们可以很快的用QSS构建属于自己的样式了。

效果

QSS

下面,主要介绍qproperty-<property name>语法,其它样式可以忽略。

QLabel#customLabel {
qproperty-minimumSize: 100px 100px;
qproperty-maximumSize: 100px 100px;
qproperty-pixmap: url(:/Images/logo);
qproperty-scaledContents: true;
} QPushButton#customButton {
qproperty-text: "Click Me";
qproperty-icon: url(:/Images/logo);
qproperty-iconSize: 20px 20px;
} QGroupBox#customGroupBox {
qproperty-title: "GroupBox";
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

源码

我们不需要通过C++代码调用任何接口,仅仅通过上面的样式就可以实现自定义风格了。

QLabel *pLabel = new QLabel(this);
QPushButton *pButton = new QPushButton(this);
QGroupBox *pGroupBox = new QGroupBox(this); pLabel->setObjectName("customLabel");
pButton->setObjectName("customButton");
pGroupBox->setObjectName("customGroupBox"); QVBoxLayout *pLayout = new QVBoxLayout();
pLayout->addStretch();
pLayout->addWidget(pLabel, 0, Qt::AlignCenter);
pLayout->addWidget(pButton);
pLayout->addStretch();
pLayout->setSpacing(10);
pLayout->setContentsMargins(10, 10, 10, 10); pGroupBox->setLayout(pLayout);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

如果按照下面这种方式写,其结果是相同的:

...
pLabel->setPixmap(QPixmap(":/Images/logo"));
pLabel->setMinimumSize(100, 100);
pLabel->setMaximumSize(100, 100);
pLabel->setScaledContents(true); pButton->setIcon(QIcon(":/Images/logo"));
pButton->setIconSize(QSize(20, 20));
pButton->setText("Click Me"); pGroupBox->setTitle("GroupBox");
...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

到这里,是不是越觉得QSS有意

Qt之QSS(Q_PROPERTY-原始属性)的更多相关文章

  1. Qt之QSS(Q_PROPERTY-自定义属性)

    版权声明:进步始于交流,收获源于分享!纯正开源之美,有趣.好玩.靠谱...作者:一去丶二三里 博客地址:http://blog.csdn.net/liang19890820   目录(?)[+]   ...

  2. Qt之QSS(动态属性)

    简述 QSS可以定制应用程序的外观,无需关注Qt样式背后的魔力.从非常轻微到极其复杂的调整,样式表都可以做到.对于一个完全定制和独特的用户体验,QtQuick和QGraphicsView是更好的选择. ...

  3. Qt之QSS(白色靓丽)

    简述 Qt助手中有关于各种部件的QSS详细讲解,资源很丰富,请参考:Qt Style Sheets Examples. 白色靓丽 - 一款漂亮的QSS风格. 你可以直接使用,也可以随意转载,但请务必保 ...

  4. Qt之QSS(黑色炫酷)

    简述 Qt助手中有关于各种部件的QSS详细讲解,资源很丰富,请参考:Qt Style Sheets Examples. 黑色炫酷 - 一款漂亮的QSS风格. 之前博客中分享了很多关于Qt的样式效果,几 ...

  5. Qt之QSS(QDarkStyleSheet)

    简述 关于样式,前面介绍了很多内容,下面分享一个深色样式表,很值得借鉴! 简述 效果 QSS 更多参考 效果 QSS /* * The MIT License (MIT) * * Copyright ...

  6. Qt的Qss样式

    http://www.cnblogs.com/coffeegg/archive/2011/11/15/2249452.html(转) http://blog.csdn.net/cgzhello1/ar ...

  7. Qt之QSS(语法高亮)

    简述 语法高亮是文本编辑器用来显示文本的,特别是源代码,根据不同的类别来用不同的颜色和字体显示.这个功能有助于编写结构化的语言,例如:编程语言.标记语言,这些语言的语法错误显示是有区别的. 简述 详细 ...

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

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

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

    http://blog.csdn.net/liang19890820/article/details/51691212 版权声明:进步始于交流,收获源于分享!纯正开源之美,有趣.好玩.靠谱...作者: ...

随机推荐

  1. elasticsearch head 连接不到elasticsearch

    配置好head后看到没有正常连接到elasticsearch.  重启后效果:

  2. mysql数据库分库分表shardingjdbc

    分库分表理解 分库分表应用于互联网的两个场景;大量数据和高并发,通常策略有两种:垂直分库,水平拆分 垂直拆分:是根据业务将一个库拆分为多个库,将一个表拆分为多个表,例如:将不常用的字段和经常访问的字段 ...

  3. edX MITx: 6.00.1x Introduction to Computer Science and Programming Using Python 课程 Week 1: Python Basics Problem Set 1 Problem 3

    Assume s is a string of lower case characters. Write a program that prints the longest substring of  ...

  4. 1149 Dangerous Goods Packaging (25 分)

    When shipping goods with containers, we have to be careful not to pack some incompatible goods into ...

  5. pyquery的简单操作

    一.初始化 1.html初始化 html = ''' <div> <ul> <li class="item-0">first item</ ...

  6. 千万不要犯这种愚蠢的错误:Property 'XXX' not found on type java.lang.String

    一定是: <c:forEach var="book" items="${booklist}"> 而不是: <c:forEach var=&qu ...

  7. (转)python编写登录接口

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://506554897.blog.51cto.com/2823970/1907262 ...

  8. (Frontend Newbie)Web三要素(三)

    上一篇简单介绍了Web三要素中的层叠样式表,本篇主要介绍三要素中最后一个,也是最难掌握的一个-----JavaScript. JavaScript 老规矩不能破,先简要交代 JavaScript 的历 ...

  9. mathjs使用指南

    1.安装 npm install mathjs 2.引入 import * as math from "mathjs" 3.使用方法 函数调用法:math.add(math.sqr ...

  10. TOJ 1721 Partial Sums

    Description Given a series of n numbers a1, a2, ..., an, the partial sum of the numbers is defined a ...