专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

从零开始学Qt(20)QSS详解(2)QSS语法

  QSS的术语和语法规则几乎与HTMLCSS相同。如果你已经了解CSS,可以快速浏览本文。样式规则
  样式表由一系列样式规则组成。样式规则由选择器(selector)和声明(declaration)组成。选择器指定哪些widgets受规则影响;声明指定应在widget上设置哪些属性。例如:QPushButton{color:red}
  在上面的样式规则中,QPushButton是选择器,{color:red}是声明。该规则指定QPushButton及其子类(例如MyPushButton)使用红色作为其前景色。
  QSS通常不区分大小写(即color,Color,COLOR和cOloR表示相同的属性)。唯一的例外是类名、对象名和Qt属性名,它们区分大小写。
  可以为同一声明指定多个选择器,使用逗号分隔选择器。例如,规则QPushButton,QLineEdit,QComboBox{color:red}
  等效于以下三个规则序列:QPushButton{color:red}QLineEdit{color:red}QComboBox{color:red}
  样式规则的声明部分是值对的列表,括在大括号中并用分号分隔。例如
  QPushButton{color:red;backgroundcolor:white}选择器类型
  到目前为止,所有示例都使用了最简单的选择器类型,即类型选择器。QSS支持CSS2中定义的所有选择器。下表总结了最有用的选择器类型。
  辅助控制器(subcontrol)
  要设置复杂widgets的样式,必须利用widget的辅助控制器(相当于子控件),例如QComboBox的下拉按钮或QSpinBox的上下箭头。选择器可能包含特定的辅助控制器,以便限制规则的应用。例如:QComboBox::dropdown{image:url(dropdown。png)}
  上述规则设置了所有QComboBox的下拉按钮的样式。虽然双冒号(::)语法让人想起CSS3的伪元素,Qt辅助控制器在概念上与这些不同,并且具有不同的级联语义。
  辅助控制器始终相对于另一个元素(参考元素)声明。此参考元素可以是widget或是其他辅助控制器。
  可以使用subcontrolorigin属性更改要使用的源矩形。例如,如果我们想将下拉列表放在QComboBox的边距矩形(marginrectangle)而不是默认的填充矩形(Paddingrectangle)中,我们可以指定:QComboBox{marginright:20px;}QComboBox::dropdown{subcontrolorigin:margin;}
  边距矩形内下拉列表的对齐方式使用subcontrolposition属性进行更改。
  width和height属性可用于控制子控件的大小。请注意,设置图像会隐式地设置子控件的大小。
  相对位置(position:relative),允许子控件的位置偏离其初始位置。例如,当按下QComboBox的下拉按钮时,我们可能希望内部箭头偏移以产生按下效果。为此,我们可以指定:QComboBox::downarrow{image:url(downarrow。png);}QComboBox::downarrow:pressed{position:relative;top:1px;left:1px;}
  绝对位置(position:absolute),允许相对于参考元素更改子控件的位置和大小。
  定位后,它们被视为与widget相同,并且可以使用框模型(boxmodel)设置样式。
  注意:对于复杂的widget(如QComboBox和QScrollBar),如果自定义了一个属性或子控件,则还必须自定义所有其他属性或子控件。伪态(PseudoStates)
  选择器可以包含伪态,表示根据widget的状态限制规则的应用。伪态出现在选择器的末尾,用冒号分隔。例如,当鼠标悬停在QPushButton上时,以下规则适用:QPushButton:hover{color:white}
  可以使用感叹号运算符对伪态进行求反。例如,当鼠标未悬停在QRadioButton上时,以下规则适用:QRadioButton:!hover{color:red}
  伪态可以链接使用,在这种情况下,逻辑AND是隐含的。例如,当鼠标悬停在选中的QCheckBox上时,以下规则适用:QCheckBox:hover:checked{color:white}
  否定的伪态也可以出现在伪态链中。例如,当鼠标悬停在未按下的QPushButton上时,以下规则适用:QPushButton:hover:!pressed{color:blue;}
  如果需要,可以使用逗号运算符表示逻辑OR:QCheckBox:hover,QCheckBox:checked{color:white}
  伪态可以与辅助控制器组合出现。例如:QComboBox::dropdown:hover{image:url(dropdownbright。png)}冲突解决
  当多个样式规则指定具有不同值的相同属性时,就会发生冲突。请考虑以下样式表:QPushButtonokButton{color:gray}QPushButton{color:red}
  这两个规则都匹配名为okButton的QPushButton实例,并且color属性存在冲突。为了解决这种冲突,我们必须考虑选择器的特异性(specificity)。在上面的例子中,QPushButtonokButton被认为比QPushButton更具体,因为它(通常)引用单个对象,而不是类的所有实例。
  同样,具有伪态的选择器比不指定伪态的选择器更具体。因此,以下样式表指定当鼠标悬停在QPushButton上时,QPushButton应具有白色文本,否则为红色文本:QPushButton:hover{color:white}QPushButton{color:red}
  下面是一个麻烦的问题:QPushButton:hover{color:white}QPushButton:enabled{color:red}
  在这里,两个选择器具有相同的特异性,因此如果在启用按钮时鼠标悬停在按钮上,则第二条规则优先。如果我们希望在这种情况下文本为白色,我们可以像这样对规则重新排序:QPushButton:enabled{color:red}QPushButton:hover{color:white}
  或者,我们可以使第一条规则更具体:QPushButton:hover:enabled{color:white}QPushButton:enabled{color:red}
  类型选择器之间也会出现类似的问题。请考虑以下示例:QPushButton{color:red}QAbstractButton{color:gray}
  这两个规则都适用于QPushButton实例(因为QPushButton继承了QAbstractButton),并且color属性存在冲突。由于QPushButton继承了QAbstractButton,因此很容易假设QPushButton比QAbstractButton更具体。但是对于样式表,所有类型选择器都具有相同的特异性,规则为最后出现的优先。换句话说,所有QAbstractButtons(包括QPushButtons)的颜色都设置为灰色。如果我们真的希望QPushButton有红色文本,我们可以随时对规则重新排序。
  为了确定规则的特异性,QSS遵循CSS2的规范。
  选择器的特异性计算如下:计算选择器中ID属性的数量(a)计算选择器中其他属性和伪类(pseudoclasses)的数量(b)计算选择器中的元素名称数(c)忽略伪元素〔即subcontrols〕。三个数字运算abc给出特异性。
  一些例子:{}a0b0c0specificity0LI{}a0b0c1specificity1ULLI{}a0b0c2specificity2ULOLLI{}a0b0c3specificity3H1〔RELup〕{}a0b1c1specificity11ULOLLI。red{}a0b1c3specificity13LI。red。level{}a0b2c1specificity21x34y{}a1b0c0specificity100级联(Cascading)
  样式表可以在QApplication、父控件和子控件上设置。任意widget的有效样式表是通过合并widget的所有父控件上的样式表以及QApplication上的任何样式表来获得的。
  当发生冲突时,无论冲突规则的特异性如何,widget自己的样式表始终优先于任何继承的样式表。同样,父控件的样式表优先于祖控件的样式表等。
  这样做的一个结果是,在widget上设置样式规则会自动使其优先于祖控件的样式表或QApplication样式表中指定的其他规则。请考虑以下示例。首先,我们在QApplication上设置一个样式表:qAppsetStyleSheet(QPushButton{color:white});
  然后我们在QPushButton对象上设置一个样式表:myPushButtonsetStyleSheet({color:blue});
  QPushButton上的样式表强制QPushButton(和任何子控件)具有蓝色文本,尽管应用程序范围内的样式表提供了更具体的规则集。
  以下方式结果也是相同,myPushButtonsetStyleSheet(color:blue);
  除非QPushButton有子项(这不太可能),样式表对它们没有影响。继承
  在经典CSS中,当项目的字体和颜色未显式设置时,它会自动从父项继承。默认情况下,使用Qt样式表时,widget不会自动从其父控件继承其字体和颜色设置。
  例如,考虑QGroupBox中的QPushButton:qAppsetStyleSheet(QGroupBox{color:red;});
  QPushButton没有显式地设置颜色。因此,它不继承其父控件QGroupBox的颜色,而是具有系统颜色。如果我们想在QGroupBox及其子项上设置颜色,我们可以这样写:qAppsetStyleSheet(QGroupBox,QGroupBox{color:red;});
  相反,使用QWidget::setFont()和QWidget::setPalette()设置字体和调色板会传到子控件。
  如果你希望字体和调色板继承到子控件,则可以设置Qt::AAUseStyleSheetPropagationInWidgetStyles标志,如下所示:QCoreApplication::setAttribute(Qt::AAUseStyleSheetPropagationInWidgetStyles,true);C命名空间中的widget
  类型选择器可用于设置特定类型的widget的样式。例如classMyPushButton:publicQPushButton{。。。}。。。qAppsetStyleSheet(MyPushButton{background:yellow;});
  QSS使用widget的QObject::className()来确定何时应用类型选择器。当自定义widget位于命名空间内时,QObject::className()返回::。这与辅助控制器的语法冲突。为了克服这个问题,当对命名空间中的widget使用类型选择器时,我们必须将::替换为。例如namespacens{classMyPushButton:publicQPushButton{。。。}}。。。qAppsetStyleSheet(nsMyPushButton{background:yellow;});设置QObject属性
  从4。3及更高版本开始,任何可设计的QPROPERTY都可以使用qproperty属性名称语法进行设置。例如MyLabel{qpropertypixmap:url(pixmap。png);}MyGroupBox{qpropertytitleColor:rgb(100,200,100);}QPushButton{qpropertyiconSize:20px20px;}
  如果属性引用QENUMS声明的枚举,则应按名称引用而不是它们的数值。
  注:请谨慎使用qproperty语法,因为它会修改正在绘制的widget。此外,qproperty语法只应用一次,即widget被样式润色时。这意味着不能在任何伪态(如QPushButton:hover)中使用它们。

从海外购到海南购,冲出机场的免税店,有何生意经?钛度图闻钛度图闻第六十四期策划制作钛媒体视觉中心,编辑刘亚宁,作图初彦墨受全球新冠疫情蔓延的影响,2020年以来,以机场等出入境口岸为核心渠道的旅游免税零售产业格局正在发生变化。以前,只能渭南市华州区的深山中有一座千年古刹,带你一起去探秘蕴空禅院头条创作挑战赛世间绝美之风景,必在人迹罕至之处。今天带你去探访的此处古迹就位于杳无人烟但风景绝美的群山之上。此地有多难找,以至于我三番五次寻觅,都未见其真容。最终在一个周末,经历了梅花丝袜搭配肥大连衣裙,巩俐女神的打球姿态,网友好玩什么叫做美?什么又叫做时尚?其实说到时尚这两个字,我们大家都有着不同的认知与理解了。为什么会这样?因为每个人对于美的感触都有着很大的不同,每个人也都有着每个人独特的气质与风采,这就查尔斯有眼不识金镶玉21岁戴安娜怀着威廉,穿泳衣身材傲人2021年,查尔斯和卡米拉一起访问希腊,73岁的查尔斯和74岁的卡米拉仍旧是非常恩爱,羡煞旁人。在下飞机的时候,查尔斯一直回头看着他身后的卡米拉,小心翼翼地嘱咐她走慢点,别着急。查姚明身材严重发福,体重超400斤,健康令人担忧?姚明是中国篮球的代表人物,球迷们也把希望都寄托在他的身上,毕竟这么多年过去了,真正在国际上有巨大影响力的中国篮球运动员也仅有姚明而已。姚明从小就与众不同,出生时的体重就达到了5公斤张惠妹罕见现身机场,身材圆润肚腩突出,近照酷似杨二车娜姆近日,有网友在上海机场偶遇到了张惠妹(阿妹),并晒出了她的近照,画面曝光后,张惠妹的身材再次引发广泛热议。当天阿妹头戴白色帽子和口罩,身穿长款豹纹大衣,内搭一件白色休闲套装,显得十秦岚又瘦又有料,穿上时髦的吊带裙秀出S型曲线,同龄人真比不上瘦而不柴才是大家追求的终极身材,虽然现在人们都以瘦为美,但是审美是多元化的,所以大家也别一味地去跟风,认为瘦就是美,像平时我们肯定要去认真的管理身材,好身材能够驾驭的服装更多,像秦反弹即将结束!不要盲目相信牛市起点论周二各股指震荡,走势符合预期,反弹已经步入尾声,震荡后可关注会否出现向下的信号。卫健委的会议其实没那么重要,因为OPEN相关传闻只是主力机构炮制出来的,是为了增加市场信心而已。他们父亲,若不缺位老舍说,没了母亲的人就像失了根的花草,古云,慈母多败儿,一母毁三代。听起来,成也母亲败也母亲,但其实最好的成长公式是0。5父亲0。5母亲1完整的孩子。若父亲功能不得彰显,我们将看到无人驾驶电动摩托车塑料制衣,盘点进博会上的绿色低碳好物南都讯第五届中国国际进口博览会正在举行,今年进博会共设六大展区,分别是食品及农产品展区汽车展区技术装备展区消费品展区医疗器械及医药保健展区服务贸易展区。南都记者现场探馆发现,今年绿邀小米荣耀与OV齐力站台,师从苹果与英伟达,联发科力战高通刚刚,MediaTek发布天玑9200旗舰5G移动芯片,极客君第一时间与大家分享发布会观感,我们一起来看看这款芯片是否能成为中国手机厂商翻身的基石。新架构,整体参数爆表天玑9200
惠享福重疾最多赔7次,不算贵,适合小孩买大家好,欢迎来到万保资讯。给小孩买保险,有的家长追求性价比,有的就更在意安全性。因为孩子的保险期长达几十年,如果保险公司经营不善甚至破产,不仅会损失金钱,还可能让孩子将来失去保障。破圈突破圈层的关键,藏在你的泛泛之交里2018年,摩拜单车以27亿元的价格被美团收购,而创始人胡玮炜则套现15亿元成功抽身。从一个刚刚月入过万的新闻记者,到身价15亿元的财富自由者,不过短短三年多的时间。胡玮炜的创业故卡塔尔为世界杯豪掷2000亿,这个女人居功至伟,真厉害啊卡塔尔世界杯即将开赛,全世界足球爱好者的目光都将聚集于此。外加本次世界杯将成为梅西和C罗等一批老球星的最后之战,而且小组赛分组也堪称恩怨局,这都让本届世界杯更加令人瞩目。为此卡塔尔库里24分10助,助克莱打出本赛季最佳一战!勇士替补令人担忧今日勇士主场战胜尼克斯,这场比赛,库里终于不再孤立无援库里出战33分钟19投9中,命中5记三分拿到24分10助攻的大号两双外加6篮板。汤普森状态回暖登场31分钟,16投8中命中4记月薪30万美元!台湾联赛报价小托马斯!他提了两个过分条件签下霍华德之后,中国台湾省的T1联赛并没有停下引援的脚步,把目标锁定在小托马斯和安东尼身上。台钢猎鹰队主帅刘孟竹证实,球队已跟安东尼有所接触。此外,台中太阳队总经理汪蔚杰透露,球队塑料感的巴黎世家(上)今天讲的巴黎世家(Balenciaga)巴黎世家,是德姆纳格瓦萨里亚(DemnaGvasalia)担任品牌艺术总监时期的巴黎世家,之前的王大仁时期品牌创始人CristbalBale祛妍堂丨祛斑后该做哪些皮肤管理呢?色斑的出现,对于爱美的女性来说,是一种非常沉重的打击。她们除了面部美白之外,还要考虑到色斑的去除。很多人都会想既然已经去过斑怎么又出现斑点了呢?我已经祛斑很久了?我这段时间一直没有双芯人像引擎双顶级传感器!Reno9系列影像曝光,逆光夜拍都出色近两年的手机,在影像方面的内卷已不止于堆料。在上周官宣11月24日下午两点半发布的OPPOReno9系列,当下确定了影像配置,前后摄参数的确认与双芯影像设计成为核心。同时,官方还就最新世界男篮排名更新,美国首次失去榜首位置,中国排名亚洲第四随着各大洲世预赛第五窗口期比赛的结束,国际篮协也及时更新了世界男篮排名。美国男篮首次失去榜首位置,跌落神坛,暂居第二西班牙以1。1分的微弱优势排名世界第一。中国男篮世界排名位居第244岁快递员猝死之后被踢出工作群,新就业形态从业者的劳动权益如何保障?大河报豫视频记者程飞虎近日,北京一名快递员双11前因心肌梗死抢救无效去世,随后公司将其踢出群,难申请工伤认定,该事件被媒体报道后引起强烈反响。随着时代发展和社会需求,快递员送餐骑手论安全,还得是日系车?美国最严碰撞成绩出炉!日系车在你们眼中的第一印象是什么?经久耐用对吧?不过还有一种说法,那就是日系车皮薄,相较于同级别中其它品牌的车型而言,如果用仅用肉眼来判断的话,确实没毛病,不过你们知道吗?有些东西
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网