Qt之QSS(动态属性)【转】
来源:互联网 发布:网络专业的职业规划 编辑:程序博客网 时间:2024/05/16 19:32
- 简述
- 自定义属性
- 限制
- 示例
- 效果
- 源码
- QSS
- 更多参考
简述
QSS可以定制应用程序的外观,无需关注Qt样式背后的魔力。从非常轻微到极其复杂的调整,样式表都可以做到。对于一个完全定制和独特的用户体验,QtQuick和QGraphicsView是更好的选择。
自定义属性
为了用户界面外观的动态变化,属性选择器可以与动态属性组合使用。动态属性在Qt4.2中引入,允许为编译时不存在的QObject属性分配属性值。即:如果为QObject设置一个urgent属性为true,该属性将跟随该类,但不会为urgent属性包含一个Q_PROPERTY宏。
创建样式选择器依赖于动态属性,例如:urgent,可以用一个非常动态的方式凸显用户界面。例如:
QLineEdit[urgent=true] { color: red;}
限制
使用这种方式有局限性。最主要的是,当一个属性值变化时,所引用的样式不会自动更新。相反地,必须手动触发更新才会生效。
unpolish()用于清理之前的样式,而polish()则用于添加新的样式。
例如:
myLineEdit->setProperty("urgent", true);myLineEdit->style()->unpolish(myLineEdit);myLineEdit->style()->polish(myLineEdit);
注意:必须在部件的样式中使用,QStyle::polish既接受QWidge也接受QApplication作为参数。
示例
以自定义标题栏中的最大化/还原按钮为例,进行切换。
效果
源码
void TitleBar::updateMaximize(){ QWidget *pWindow = this->window(); if (pWindow->isTopLevel()) { bool bMaximize = pWindow->isMaximized(); m_pMaximizeButton->setToolTip(bMaximize ? tr("Restore") : tr("Maximize")); m_pMaximizeButton->setProperty("maximizeProperty", bMaximize ? "restore" : "maximize"); // 手动更新样式 m_pMaximizeButton->style()->unpolish(m_pMaximizeButton); m_pMaximizeButton->style()->polish(m_pMaximizeButton); m_pMaximizeButton->update(); //m_pMaximizeButton->setStyle(QApplication::style()); }}
使用属性选择器的时候,如果之前已经有了样式,那么,需要重新设置一下,使用了unpolish()与polish()。当然,也可以不用那么复杂,直接使用setStyle(QApplication::style())也可以搞定。
QSS
QPushButton#maximizeButton[maximizeProperty="maximize"] { border-radius: none; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; background: rgb(50, 50, 50); image: url(:/Images/maximize);}QPushButton#maximizeButton[maximizeProperty="maximize"]:hover { background: rgb(60, 60, 60); image: url(:/Images/maximizeHover);}QPushButton#maximizeButton[maximizeProperty="maximize"]:pressed { background: rgb(55, 55, 55); image: url(:/Images/maximizePressed);}QPushButton#maximizeButton[maximizeProperty="restore"] { border-radius: none; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; background: rgb(50, 50, 50); image: url(:/Images/restore);}QPushButton#maximizeButton[maximizeProperty="restore"]:hover { background: rgb(60, 60, 60); image: url(:/Images/restoreHover);}QPushButton#maximizeButton[maximizeProperty="restore"]:pressed { background: rgb(55, 55, 55); image: url(:/Images/restorePressed);}
更多参考
- Qt之加载QSS文件【转】
- Qt之QSS(语法高亮)【转】
- Qt之QSS(Q_PROPERTY-原始属性)【转】
- Qt之QSS(QDarkStyleSheet)【转】
- Qt之QSS(黑色炫酷)【转】
- Qt之QSS(白色靓丽)【转】
- Qt之界面换肤【转】
阅读全文
0 0
- Qt之QSS(动态属性)【转】
- Qt之QSS(动态属性)
- Qt之QSS(Q_PROPERTY-原始属性)【转】
- Qt之QSS(Q_PROPERTY-自定义属性)【转】
- Qt之QSS(Q_PROPERTY-原始属性)
- Qt之QSS(Q_PROPERTY-自定义属性)
- Qt之QSS(Q_PROPERTY-自定义属性)
- (转)Qt之qss文件编写
- Qt之QSS(QDarkStyleSheet)【转】
- Qt之QSS(白色靓丽)【转】
- Qt之QSS(QDarkStyleSheet)
- Qt之QSS(QTreeView)
- Qt之QSS(语法高亮)【转】
- Qt之QSS(样式表语法)【转】
- Qt之QSS(黑色炫酷)【转】
- Qt之加载QSS文件【转】
- Qt之QSS(样式表语法)
- Qt之QSS(语法高亮)
- CentOS7虚拟机网络的配置
- 【MyBatis】什么是mybatis,mybatis有什么特点(一)
- 网络HTTP、TCP、UDP、Socket 知识总结
- elasticsearch bulk数据--ES批量导入json数据
- Android之NDK与C++的环境变量
- Qt之QSS(动态属性)【转】
- Glide的变换(美图效果)
- 完成FFmepg的移植,编译ffmpeg4Android
- lamnda函数--c++11中的匿名函数
- C++分布式实时应用框架——系统管理模块
- Tomcat 修改/webapps/ROOT发布路径(Linux和windows环境)
- Generate Parentheses
- Java Web项目中解决中文乱码方法总结
- 图论九——最小生成树(prim)