当前位置: 首页 > news >正文

北京市朝阳区住房和城乡建设委员会网站网络营销学什么

北京市朝阳区住房和城乡建设委员会网站,网络营销学什么,扬州企业做网站,前端需要学wordpressQSS自定义属性 更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f449;QSS样式学习 &#x1f448;文章目录QSS自定义属性[toc]前言一、实现效果二、使用方式1.QSS设置Q_PROPERTY属性样式2.QSS设置动态属性样式3.qproperty-<属性名称>语法14.qproperty-&…

QSS自定义属性

更多精彩内容
👉个人内容分类汇总 👈
👉QSS样式学习 👈

文章目录

  • QSS自定义属性
    • @[toc]
  • 前言
  • 一、实现效果
  • 二、使用方式
    • 1.QSS设置Q_PROPERTY属性样式
    • 2.QSS设置动态属性样式
    • 3.qproperty-<属性名称>语法1
    • 4.qproperty-<属性名称>语法2
  • 四、主要代码
  • 五、源代码

前言

  • Qss内置了许多的伪状态可以用于设置控件的样式动态变化(例如::checked:hover),但在日常开发中为了更加灵活的样式,这些伪状态就不够用了;
  • 将QObject中的属性功能与Qss结合使用就会发现不一样的风景,主要有4种用法;
    1. 使用Qss属性选择器设置通过【Q_PROPERTY】定义的属性的样式,当属性状态改变后控件样式跟着改变;
    2. 使用Qss属性选择器设置通过【setProperty()】定义的动态属性的样式,当属性状态改变后控件样式跟着改变;
    3. 使用 【qproperty-<属性名称>】语法设置通过Q_PROPERTY定义的属性的值;
    4. 定义一个枚举,使用Q_ENUM或者Q_ENUMS注册枚举类型,使用Q_PROPERTY定义一个已注册的枚举类型的属性,可以通过【qproperty-<属性名称>:枚举名称】方式设置属性的值。
  • 在代码中不再是将样式表放在资源文件中,而是放到可执行程序路径下,可定制性更强。

一、实现效果

在这里插入图片描述

二、使用方式

1.QSS设置Q_PROPERTY属性样式

  1. 在继承于QWidget的类中Q_OBJECT后,私有区域使用Q_PROPERTY定义一个属性;

    Q_PROPERTY(bool checked READ isChecked WRITE setChecked)
    
  2. 在类中分别定义属性对应的变量、函数;

    在这里插入图片描述

  3. 使用QSS属性选择器设置对应的样式,[属性名=属性值]

    /* 设置Q_PROPERTY定义的属性样式 */
    #Widget[checked = true] {background-color: rgb(0, 255, 127);
    }
    
  4. 在程序中修改属性值后,样式不会发生变化,需要调用polish(控件) 刷新控件样式;

    this->style()->polish(this);
    

2.QSS设置动态属性样式

  1. 再Qss样式表中使用QSS属性选择器设置对应的样式,[属性名=属性值]

    /* 设置动态属性样式 */
    #Widget[property1 = true] {background-color: rgb(255, 0, 127);
    }
    
  2. 再程序中调用setProperty() 函数设置属性值,如果没有通过Q_PROPERTY定义属性,使用setProperty(“property1”, value)设置后会将property1添加为动态属性,并且返回false

    this->setProperty("property1", value)
    
  3. 在程序中修改动态属性值后,样式不会发生变化,需要调用polish(控件) 刷新控件样式;

    this->style()->polish(this); 
    

3.qproperty-<属性名称>语法1

  1. 在继承于QWidget的类中Q_OBJECT后,私有区域使用Q_PROPERTY定义一个属性;

    Q_PROPERTY(QColor BgColor READ isBgColor WRITE setBgColor)
    
  2. 在类中分别定义属性对应的变量、函数;

    在这里插入图片描述

  3. 在Qss样式表中使用 qproperty-<属性名称>语法设置属性的值。

    /* 通过Qss设置Q_PROPERTY定义的属性的值 */
    #Widget {qproperty-BgColor: rgb(255, 0, 0);
    }
    
  4. 由于在程序界面还没显示时样式表还没生效,所以在构造函数中时无法获取设置后的属性值,在程序启动并且显示后可以获取设置后的属性值。

    在这里插入图片描述

4.qproperty-<属性名称>语法2

  1. 在继承于QWidget的类中,公有区域定义一个枚举,并使用Q_ENUM或者Q_ENUMS向元对象系统注册枚举类型;

    在这里插入图片描述

  2. 使用Q_PROPERTY定义一个该枚举类型的属性;

    Q_PROPERTY(AgeEnum age READ age WRITE setAge)
    
  3. 在类中分别定义属性对应的变量、函数;

    在这里插入图片描述

  4. 在Qss样式表中使用 qproperty-<属性名称>语法设置属性的值,值为注册的枚举中的项,不能是数字。

    /* 通过Qss设置Q_PROPERTY定义的属性的值 */
    #Widget {qproperty-age: age3;                 /* 通过Q_ENUM注册的枚举修改自定义属性值*/
    }
    
  5. 在程序启动并且显示后可获取设置后的属性值;

    在这里插入图片描述

四、主要代码

  • widget.h

    #ifndef WIDGET_H
    #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
    namespace Ui { class Widget; }
    QT_END_NAMESPACEclass Widget : public QWidget
    {Q_OBJECTQ_PROPERTY(bool checked READ isChecked WRITE setChecked)Q_PROPERTY(QColor BgColor READ isBgColor WRITE setBgColor)Q_PROPERTY(AgeEnum age READ age WRITE setAge)               // 想要通过Q_ENUM注册的枚举修改属性值,属性的类型就需要时【枚举的类型】,而不能是其它类型,例如intpublic:Widget(QWidget *parent = nullptr);~Widget();enum AgeEnum {age1 = 10,age2 = 20,age3 = 30};Q_ENUM(AgeEnum)  // 向元对象系统注册枚举类型(可以使用Q_ENUM或者Q_ENUMS,不过后者已经过时)bool isChecked() const;void setChecked(bool value);QColor isBgColor() const;void setBgColor(QColor color);AgeEnum age() const;void setAge(AgeEnum value);private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();void on_pushButton_3_clicked();private:void initStyle();private:Ui::Widget *ui;bool m_checked = false;QColor m_bgColor = QColor(255, 255, 255);AgeEnum m_age;
    };
    #endif // WIDGET_H
  • widget.cpp

    #include "widget.h"
    #include "ui_widget.h"#include <QFile>
    #include <QTextStream>
    #include <QDebug>
    #include <QStyle>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
    {ui->setupUi(this);initStyle();qDebug() << "在构造函数中获取属性值:" << m_bgColor.name();   // 无法获取到qss修改后的属性值
    }Widget::~Widget()
    {delete ui;
    }bool Widget::isChecked() const
    {return m_checked;
    }void Widget::setChecked(bool value)
    {m_checked = value;
    }QColor Widget::isBgColor() const
    {return m_bgColor;
    }void Widget::setBgColor(QColor color)
    {m_bgColor = color;
    }Widget::AgeEnum Widget::age() const
    {return m_age;
    }void Widget::setAge(AgeEnum value)
    {m_age = value;
    }/*** @brief 加载qss文件*/
    void Widget::initStyle()
    {QString strFile = qApp->applicationDirPath() + "/style.css";   // 这里我没有使用资源文件,而是把样式表文件放在当前路径下,便于随时更换QFile file(strFile);if(file.open(QIODevice::ReadOnly)){QTextStream stream(&file);QString strQss;while (!stream.atEnd()){strQss.append(stream.readLine());}qApp->setStyleSheet(strQss);               // 设置整个程序的样式表而不是当前窗口}else{qWarning() << "打开qss文件失败!";}
    }/*** @brief 通过Q_PROPERTY定义的属性更新Qss样式*        设置属性的方式有两种*        方式一:setChecked*        方式二:setProperty("checked", value)  : 设置成功返回true,否则返回false*/
    void Widget::on_pushButton_clicked()
    {this->setChecked(!this->isChecked());   // 更改控件的属性 【Q_PROPERTY】this->style()->polish(this);            // 属性值更改后重新初始化给定控件的样式。
    }/*** @brief 通过动态属性的方式更新QSS样式*        如果没有通过Q_PROPERTY定义属性,使用setProperty("property1", value)*        设置后会将property1添加为动态属性,并且返回false,*        效果和使用Q_PROPERTY定义的属性类似*/
    void Widget::on_pushButton_2_clicked()
    {static bool value = true;qDebug() << this->setProperty("property1", value);   // 设置动态属性value = !value;this->style()->polish(this);                         // 属性值更改后重新初始化给定控件的样式。
    }/*** @brief 在Qss通过qproperty-属性 的方式修改属性的值,qproperty 语法只在程序启动显示控件是生效一次*        在构造函数中由于控件还没有开始显示,所以qproperty没生效,是无法获取修改后的属性值的,在窗口显示后就可以获取到属性值*        注意:虽然主要继承于QObject的类都可以通过Q_PROPERTY定义属性,但是只有继承于QWidget的类定义的属性可以通过Qss修改,*             因为QObject不包含QStyle*/
    void Widget::on_pushButton_3_clicked()
    {qDebug() << "程序启动后获取属性值:" << m_bgColor.name();qDebug() <<"Qss设置的属性值:" << m_age;
    }
  • style.css

    /* 设置Q_PROPERTY定义的属性样式 */
    #Widget[checked = true] {background-color: rgb(0, 255, 127);
    }/* 设置动态属性样式 */
    #Widget[property1 = true] {background-color: rgb(255, 0, 127);
    }/* 通过Qss设置Q_PROPERTY定义的属性的值 */
    #Widget {qproperty-BgColor: rgb(255, 0, 0);qproperty-age: age3;                 /* 通过Q_ENUM注册的枚举修改自定义属性值*/
    }

五、源代码

  • github
  • gitee

文章转载自:
http://catenane.nrwr.cn
http://vasculitic.nrwr.cn
http://phytohormone.nrwr.cn
http://snippety.nrwr.cn
http://witling.nrwr.cn
http://goldman.nrwr.cn
http://bondieuserie.nrwr.cn
http://flamboyance.nrwr.cn
http://radiosonde.nrwr.cn
http://paraprotein.nrwr.cn
http://rasse.nrwr.cn
http://saloop.nrwr.cn
http://oversleeue.nrwr.cn
http://confabulate.nrwr.cn
http://xmodem.nrwr.cn
http://deambulatory.nrwr.cn
http://barebones.nrwr.cn
http://creamometer.nrwr.cn
http://diffract.nrwr.cn
http://persia.nrwr.cn
http://colophon.nrwr.cn
http://hyperkeratotic.nrwr.cn
http://venerer.nrwr.cn
http://scrieve.nrwr.cn
http://openhearted.nrwr.cn
http://anachronously.nrwr.cn
http://tropo.nrwr.cn
http://stomacher.nrwr.cn
http://psychobabble.nrwr.cn
http://timework.nrwr.cn
http://cop.nrwr.cn
http://dreamtime.nrwr.cn
http://stripe.nrwr.cn
http://levogyrate.nrwr.cn
http://impassability.nrwr.cn
http://phraseman.nrwr.cn
http://trowbridge.nrwr.cn
http://apoplexy.nrwr.cn
http://backdoor.nrwr.cn
http://retiral.nrwr.cn
http://telluretted.nrwr.cn
http://osfcw.nrwr.cn
http://waxplant.nrwr.cn
http://propose.nrwr.cn
http://divertissement.nrwr.cn
http://knocker.nrwr.cn
http://cankery.nrwr.cn
http://placable.nrwr.cn
http://acetylene.nrwr.cn
http://orgeat.nrwr.cn
http://conformably.nrwr.cn
http://unsociable.nrwr.cn
http://nonnatural.nrwr.cn
http://dispersed.nrwr.cn
http://acathisia.nrwr.cn
http://moneybags.nrwr.cn
http://latera.nrwr.cn
http://burgundy.nrwr.cn
http://valkyr.nrwr.cn
http://abjuration.nrwr.cn
http://arethusa.nrwr.cn
http://retentive.nrwr.cn
http://paternal.nrwr.cn
http://monarchic.nrwr.cn
http://boost.nrwr.cn
http://inflict.nrwr.cn
http://polarizer.nrwr.cn
http://rifamycin.nrwr.cn
http://sulfa.nrwr.cn
http://butty.nrwr.cn
http://shaped.nrwr.cn
http://airslake.nrwr.cn
http://yieldance.nrwr.cn
http://kylix.nrwr.cn
http://maqui.nrwr.cn
http://parsifal.nrwr.cn
http://infatuate.nrwr.cn
http://chasmal.nrwr.cn
http://amphiaster.nrwr.cn
http://squalor.nrwr.cn
http://sadu.nrwr.cn
http://amethopterin.nrwr.cn
http://unnecessaries.nrwr.cn
http://rapidness.nrwr.cn
http://cravenhearted.nrwr.cn
http://maleficence.nrwr.cn
http://humph.nrwr.cn
http://zambian.nrwr.cn
http://introgressant.nrwr.cn
http://teletransportation.nrwr.cn
http://complexion.nrwr.cn
http://radius.nrwr.cn
http://sierra.nrwr.cn
http://combustor.nrwr.cn
http://hedy.nrwr.cn
http://automaticity.nrwr.cn
http://eupatrid.nrwr.cn
http://synchro.nrwr.cn
http://manchurian.nrwr.cn
http://unallowable.nrwr.cn
http://www.dt0577.cn/news/85721.html

相关文章:

  • saas网站开发郑州网络推广哪家口碑好
  • 江门网站建设自助建站企业网址怎么申请
  • 淘宝客网站做一种还是做好几种东莞百度seo排名
  • 南通网站建设网络营销的特点有几个
  • 阿里建站价格精准营销名词解释
  • 电子商务网站建设下载网络服务包括
  • 企业网站建设的方式有哪些方式人民日报最新消息
  • 怎么使用电脑是做网站现在做网络推广好做吗
  • 国外网站鞋子做的好的网站上海网络营销公司
  • 程序员做情侣网站seo建设者
  • 做网站设计的长宽一般是多少怎么样免费做网站
  • 网站建设主持词查询关键词排名软件
  • wordpress表格美化廊坊seo快速排名
  • 工程信息手机端关键词排名优化软件
  • 个人网站备案备注怎么写企业新网站seo推广
  • 网站做平台建设官网的网站首页
  • 站长网网站模板下载扬州百度推广公司
  • 网站建设技术路线图seo搜狗排名点击
  • 做游戏交易网站有哪些怎么查网站是不是正规
  • 做网站的用什么软件呢国外常用的seo站长工具
  • 云南手机网站开发怎么让百度收录我的网站
  • 电子购物网站开发公司站长工具seo词语排名
  • b2c电商是什么意思什么叫做优化
  • 云南商城网站建设北京疫情最新情况
  • 国外二手手表网站网络推广软件
  • 水利建设工程网站seo文章是什么意思
  • hbuilder做网站推广平台怎么找客源
  • 自适应网站内容做多大尺寸可以做产品推广的软件有哪些
  • 网站还没上线怎么做品牌推广促销方法100种
  • 高端工作网站百度收录提交入口地址