qt:qss常用一些属性

头文件

#ifndef CSTYLE_H
#define CSTYLE_H

#include <QString>
#include <QMap>

class CStyle
{
public:
    CStyle();
};

class CWidthStyle
{
public:
    QString toString();
    void setWidth(int width);
    void setMinWidth(int width);
    void setMaxWidth(int width);
    void setFixedWidth(int width);
private:
    QString m_width;
    QString m_minWidth;
    QString m_maxWidth;
};

class CHeightStyle
{
public:
    QString toString();
    void setHeight(int Height);
    void setMinHeight(int Height);
    void setMaxHeight(int Height);
    void setFixedHeight(int Height);
private:
    QString m_Height;
    QString m_minHeight;
    QString m_maxHeight;
};

class CColor
{
public:
    CColor()=default;
    CColor(QString color);
    QString toString();
    QString getValue();
    void setColor(QString color);
    void setColor(int r,int g ,int b);
    void setColor(int r,int g ,int b,int a);
    void setRed();
    void setGreen();
    void setBlue();
    void setWhite();
public:
    QString m_color;
};

class BackgroundColorStyle
{
public:
    QString toString();
    void setColor(CColor color);
public:
    QString m_color;
};

class BackgroundImageStyle
{
public:
    QString toString();
    BackgroundImageStyle(QString filename=QString());
    void setImage(QString filename);
private:
    QString m_strfilename;
};

//设置背景图片background-image平铺方式
class BackgroundRepeatStyle
{
public:
    QString toString();
    void setNoRepeat();
    void setRepeat();
    void setRepeatX();
    void setNoRepeatY();
private:
    QString m_strRepeat;
};

//设置背景图片background-image水平和垂直对齐方式
class CBackgroundPosition
{
public:
    QString toString();
    void setCenter();
    void setTop();
    void setBottom();
    void setLeft();
    void setRight();
private:
    QString m_strHPosition;
    QString m_strVPosition;
};

class CBackgroundAttachment
{
public:
    QString toString();
    void stetScroll();//默认
    void stetFixed();//background-image固定在某一个位置,配合background-position在有滚动条控件,如textEdit使用
public:
    QString m_strAttachment;
};

//设置背景颜色background-color覆盖区域,起始区域
class CBackgroundClip
{
public:
    QString toString();
    void setMargin();
    void setBorder();
    void setPadding();
    void setContent();
public:
    QString m_strClip;
};

//设置背景图片background-image覆盖区域,起始区域
class CBackgroundOrigin
{
public:
    QString toString();
    void setMargin();
    void setBorder();
    void setPadding();
    void setContent();
public:
    QString m_strOrigin;
};

class CFontStyle
{
public:
    QString toString();
    void setSize(int size);

    void setStyleNomal();
    void setStyleItalic();
    void setStyleOblique();

    void setWeightNomal();
    void setWeightBold();
    void setWeightBoldValue(int weight=900);

    void setFontFamily(QString family="微软雅黑");
public:
    QMap<QString,QString> m_style;
};

//目前只有QPushButton QProgressBar支持,bottom在Qt6.x支持
class CTextAlign
{
public:
    QString toString();
    void setLeft();
    void setRight();
    void setTop();
    void setBottom();
    void setCenter();
    void setHLeft();
    void setHRight();
    void setHCenter();
    void setVTop();
    void setVBottom();
    void setVCenter();
public:
    QString m_align;
    QString m_strHAlign;
    QString m_strVAlign;
};

//QLabel
class CPropertyAlignment
{
public:
    QString toString();
    void setCenter();
    void setRight();
    void setLeft();
    void setRightCenter();
    void setRightTop();
    void setRightBottom();
    void setLeftCenter();
    void setLeftTop();
    void setLeftBottom();
    void setHCenterTop();
    void setHCenterBottom();
    void setAlignment(int alignmentflag);
public:
    QString m_align;
};

class CTextDecorationStyle
{
public:
    QString toString();
    void setNone();
    void setOverline();
    void setLineThrough();
    void setUnderline();
private:
    QString m_strDecoration;
};


/**
-------------------------
margin  外边距,和其他控件距离
---border------边框-------
|
Padding内边距,和content距离
|
       content
|
|
--------------------------
margin
--------------------------
***/
class CPadding
{
public:
    QString toString();
    void setPadding(int padding);
    void setPadding(int top,int right,int bottom,int left);
private:
    QString m_strPadding;
};

class CMargin
{
public:
    QString toString();
    void setMargin(int margin);
    void setMargin(int top,int right,int bottom,int left);
private:
    QString m_strMargin;

};

class CBorder
{
public:
    QString toString();
    CBorder()=default;
    CBorder(int width,CColor color,QString style = QString("solid") );
    void setBorder(int width,CColor color,QString style = QString("solid"));
private:
    QString m_strBorderr;
};

class  CBorderWidthStyle
{
public:
    QString toString();
    void setWidth(int width);
    void setWidth(int top,int right,int bottom,int left);
    void setWidth(int top,int right);//bottom=top ,left=right
private:
    QString m_strWidth;
};

class  CBorderStyle
{
public:
    QString toString();
    void setSolid();
    void setStyle(QString style);//none  dotted(点状边框) dashed(虚线) solid(实线) double(双线) groove(3D 凹槽边框) ridge(3D 垄状边框) inset( 3D inset 边框) outset(3D outset 边框)
    void setStyle(QString top,QString right,QString bottom,QString left);
    void setStyle(QString top,QString right);
private:
    QString m_strStyle;
};

class CBorderColor
{
public:
    QString toString();
    void setColor(CColor color);
    void setColor(CColor top,CColor right,CColor bottom,CColor left);
    void setColor(CColor top,CColor right);//bottom=top ,left=right
private:
    QString m_color;
};


class CBorderRadius
{
public:
    QString toString();
    void setRadius(int nRadius);
    void setRadius(int nHRadius,int nVRadius);
    void setRadius(int topleft,int toprRight,int bottomRight,int bottomLeft);
private:
    QString m_strRadius;
};

class BorderImage
{
public:
    QString toString();

    void setImage(QString image);

    //slice-图片切片 单位px
    void setImage(QString image,int slice);

    //HRepeat取值:stretch-默认 round-均分平铺 repeat-平铺
    void setImage(QString image,int sliceTop,int sliceRight,int sliceBottom,int sliceLeft,QString HRepeat=QString("stretch"),QString VRepeat=QString("stretch"));
private:
    QString m_strBorderImage;
};

#endif // CSTYLE_H

#include "cstyle.h"
#include <QDebug>

CStyle::CStyle()
{

}

QString CWidthStyle::toString()
{
    if(!m_width.isEmpty()){
        return QString("width:%1px;").arg(m_width);
    }
    QString width;
    if(!m_minWidth.isEmpty()){
        width += QString("min-width:%1px;").arg(m_minWidth);
    }
    if(!m_maxWidth.isEmpty()){
        width += QString("max-width:%1px;").arg(m_maxWidth);
    }
    return width;
}

void CWidthStyle::setWidth(int width)
{
    m_minWidth.clear();
    m_maxWidth.clear();
    m_width  = QString::number(width);
}

void CWidthStyle::setMinWidth(int width)
{
    m_width.clear();
    m_minWidth = QString::number(width);
}

void CWidthStyle::setMaxWidth(int width)
{
    m_width.clear();
    m_maxWidth = QString::number(width);
}

void CWidthStyle::setFixedWidth(int width)
{
    m_width.clear();
    m_minWidth = QString::number(width);
    m_maxWidth = QString::number(width);
}

QString CHeightStyle::toString()
{
    if(!m_Height.isEmpty()){
        return QString("height:%1px;").arg(m_Height);
    }
    QString Height;
    if(!m_minHeight.isEmpty()){
        Height += QString("min-height:%1px;").arg(m_minHeight);
    }
    if(!m_maxHeight.isEmpty()){
        Height += QString("max-height:%1px;").arg(m_maxHeight);
    }
    return Height;
}

void CHeightStyle::setHeight(int Height)
{
    m_minHeight.clear();
    m_maxHeight.clear();
    m_Height  = QString::number(Height);
}

void CHeightStyle::setMinHeight(int Height)
{
    m_Height.clear();
    m_minHeight = QString::number(Height);
}

void CHeightStyle::setMaxHeight(int Height)
{
    m_Height.clear();
    m_maxHeight = QString::number(Height);
}

void CHeightStyle::setFixedHeight(int Height)
{
    m_Height.clear();
    m_minHeight = QString::number(Height);
    m_maxHeight = QString::number(Height);
}

CColor::CColor(QString color)
{
    this->setColor(color);
}

QString CColor::toString()
{
    return QString("color:%1;").arg(m_color);
}

QString CColor::getValue()
{
    return m_color;
}

void CColor::setColor(QString color)
{
    m_color = color;
}

void CColor::setColor(int r, int g, int b)
{
    m_color = QString("rgb(%1,%2,%3)").arg(r).arg(g).arg(b);
}

void CColor::setColor(int r, int g, int b, int a)
{
    m_color = QString("rgba(%1,%2,%3,%4)").arg(r).arg(g).arg(b).arg(a);
}

void CColor::setRed()
{
    m_color = "red";
}

void CColor::setGreen()
{
    m_color = "green";
}

void CColor::setBlue()
{
    m_color = "blue";
}

void CColor::setWhite()
{
    m_color = "white";
}

QString CFontStyle::toString()
{
    QString str;
    auto it = m_style.begin();
    while(it != m_style.end()){
        QString item = QString("%1:%2;").arg(it.key()).arg(it.value());
        str +=  item;
        it++;
    }
    return str;
}

QString BackgroundColorStyle::toString()
{
    if(m_color.isEmpty()){
        qDebug()<<m_color<<"isEmpty";
        return QString();
    }
    return QString("background-color:%1;").arg(m_color);
}

void BackgroundColorStyle::setColor(CColor color)
{
    m_color= color.getValue();
}


QString BackgroundImageStyle::toString()
{
    if(m_strfilename.isEmpty()){
        return QString();
    }
    return QString("background-image:url(%1);").arg(m_strfilename);
}

BackgroundImageStyle::BackgroundImageStyle(QString filename)
    :m_strfilename(filename)
{

}

void BackgroundImageStyle::setImage(QString filename)
{
    m_strfilename = filename;
}

QString BackgroundRepeatStyle::toString()
{
    if(m_strRepeat.isEmpty()){
        return QString();
    }
    return QString("background-repeat:%1;").arg(m_strRepeat);
}

void BackgroundRepeatStyle::setNoRepeat()
{
    m_strRepeat = "no-repeat";
}

void BackgroundRepeatStyle::setRepeat()
{
   // m_strRepeat = "repeat";
    m_strRepeat.clear();
}

void BackgroundRepeatStyle::setRepeatX()
{
    m_strRepeat = "repeat-x";
}

void BackgroundRepeatStyle::setNoRepeatY()
{
    m_strRepeat = "repeat-y";
}


QString CBackgroundPosition::toString()
{
    if(m_strHPosition.isEmpty() && m_strVPosition.isEmpty()){
        return QString();
    }
    return QString("background-position:%1 %2;").arg(m_strHPosition).arg(m_strVPosition);
}

void CBackgroundPosition::setCenter()
{
    m_strHPosition = "center";
    m_strVPosition = "center";
}

void CBackgroundPosition::setTop()
{
    m_strVPosition = "top";
}

void CBackgroundPosition::setBottom()
{
    m_strVPosition = "bottom";
}

void CBackgroundPosition::setLeft()
{
    m_strHPosition = "left";
}

void CBackgroundPosition::setRight()
{
    m_strHPosition = "right";
}

void CFontStyle::setSize(int size)
{
    m_style["font-size"]=QString("%1px").arg(size);
}

void CFontStyle::setStyleNomal()
{
    m_style["font-style"]="normal";
}

void CFontStyle::setStyleItalic()
{
    m_style["font-style"]="italic";
}

void CFontStyle::setStyleOblique()
{
    m_style["font-style"]="oblique";
}

void CFontStyle::setWeightNomal()
{
    m_style["font-weight"]="normal";
}

void CFontStyle::setWeightBold()
{
    m_style["font-weight"]="bold";
}

void CFontStyle::setWeightBoldValue(int weight)
{
    m_style["font-weight"]=QString::number(weight);
}

void CFontStyle::setFontFamily(QString family)
{
    m_style["font-family"] =QString("\"%1\"").arg(family);
}

QString CTextAlign::toString()
{
    if(!m_align.isEmpty()){
        return QString("text-align:%1;").arg(m_align);
    }
    if(m_strHAlign.isEmpty()){
        m_strHAlign = "center";
    }
    if(m_strVAlign.isEmpty()){
        m_strVAlign = "center";
    }
    return QString("text-align:%1 %2;").arg(m_strHAlign).arg(m_strVAlign);
}

void CTextAlign::setLeft()
{
    m_align = "left";
}

void CTextAlign::setRight()
{
    m_align = "right";
}

void CTextAlign::setTop()
{
    m_align = "top";
}

void CTextAlign::setBottom()
{
    m_align = "bottom";
}

void CTextAlign::setCenter()
{
    m_align = "center";
}

void CTextAlign::setHLeft()
{
    m_strHAlign = "left";
}

void CTextAlign::setHRight()
{
    m_strHAlign = "right";
}

void CTextAlign::setHCenter()
{
    m_strHAlign = "center";
}

void CTextAlign::setVTop()
{
    m_strVAlign = "top";
}

void CTextAlign::setVBottom()
{
    m_strVAlign = "bottom";
}

void CTextAlign::setVCenter()
{
    m_strVAlign = "center";
}

QString CPropertyAlignment::toString()
{
    if(m_align.isEmpty()){
        return QString();
    }

#if (QT_VERSION <= QT_VERSION_CHECK(6,0,0))
    return QString("qproperty-alignment:\"%1\";").arg(m_align);
#else
    return QString("qproperty-alignment:%1;").arg(m_align);
#endif

}

void CPropertyAlignment::setCenter()
{
    this->setAlignment(Qt::AlignCenter);
}

void CPropertyAlignment::setRight()
{
    this->setAlignment(Qt::AlignRight);
}

void CPropertyAlignment::setLeft()
{
    this->setAlignment(Qt::AlignLeft);
}

void CPropertyAlignment::setRightCenter()
{
#if (QT_VERSION <= QT_VERSION_CHECK(6,0,0))
    m_align = "AlignRight|AlignCenter";
#else
    this->setAlignment(Qt::AlignRight|Qt::AlignCenter);
#endif
}

void CPropertyAlignment::setRightTop()
{
#if (QT_VERSION <= QT_VERSION_CHECK(6,0,0))
    m_align = "AlignRight|AlignTop";
#else
    this->setAlignment(Qt::AlignRight|Qt::AlignTop);
#endif

}

void CPropertyAlignment::setRightBottom()
{
#if (QT_VERSION <= QT_VERSION_CHECK(6,0,0))
    m_align = "AlignRight|AlignBottom";
#else
    this->setAlignment(Qt::AlignRight|Qt::AlignBottom);
#endif
}

void CPropertyAlignment::setLeftCenter()
{
#if (QT_VERSION <= QT_VERSION_CHECK(6,0,0))
    m_align = "AlignLeft|AlignCenter";
#else
    this->setAlignment(Qt::AlignLeft|Qt::AlignCenter);
#endif
}

void CPropertyAlignment::setLeftTop()
{
#if (QT_VERSION <= QT_VERSION_CHECK(6,0,0))
    m_align = "AlignLeft|AlignTop";
#else
    this->setAlignment(Qt::AlignLeft|Qt::AlignTop);
#endif
}

void CPropertyAlignment::setLeftBottom()
{
#if (QT_VERSION <= QT_VERSION_CHECK(6,0,0))
    m_align = "AlignLeft|AlignBottom";
#else
    this->setAlignment(Qt::AlignLeft|Qt::AlignBottom);
#endif
}

void CPropertyAlignment::setHCenterTop()
{
#if (QT_VERSION <= QT_VERSION_CHECK(6,0,0))
    m_align = "AlignHCenter|AlignTop";
#else
    this->setAlignment(Qt::AlignHCenter|Qt::AlignTop);
#endif
}

void CPropertyAlignment::setHCenterBottom()
{
#if (QT_VERSION <= QT_VERSION_CHECK(6,0,0))
    m_align = "AlignHCenter|AlignBottom";
#else
    this->setAlignment(Qt::AlignHCenter|Qt::AlignBottom);
#endif
}

void CPropertyAlignment::setAlignment(int alignmentflag)
{
    qDebug()<<alignmentflag<<(int)(Qt::AlignCenter);
#if (QT_VERSION <= QT_VERSION_CHECK(6,0,0))
    switch (alignmentflag) {
    case Qt::AlignLeft:
        m_align = "AlignLeft";
        break;
    case Qt::AlignRight:
        m_align = "AlignRight";
        break;
    case Qt::AlignHCenter:
        m_align = "AlignHCenter";
        break;
    case Qt::AlignJustify:
        m_align = "AlignJustify";
        break;
    case Qt::AlignAbsolute:
        m_align = "AlignAbsolute";
        break;
    case Qt::AlignHorizontal_Mask:
        m_align = "AlignHorizontal_Mask";
        break;
    case Qt::AlignTop:
        m_align = "AlignTop";
        break;
    case Qt::AlignBottom:
        m_align = "AlignBottom";
        break;
    case Qt::AlignVCenter:
        m_align = "AlignVCenter";
        break;
    case Qt::AlignBaseline:
        m_align = "AlignBaseline";
        break;
    case Qt::AlignVertical_Mask:
        m_align = "AlignBaseline";
        break;
    case Qt::AlignCenter:
        m_align = "AlignCenter";
        break;
    default:
        break;
    }
#else
    m_align = QString::number(alignmentflag);
#endif
}


QString CTextDecorationStyle::toString()
{
    if(m_strDecoration.isEmpty()){
        return QString();
    }
    return QString("text-decoration:%1;").arg(m_strDecoration);
}

void CTextDecorationStyle::setNone()
{
    m_strDecoration = "none";
}

void CTextDecorationStyle::setOverline()
{
    m_strDecoration = "overline";
}

void CTextDecorationStyle::setLineThrough()
{
    m_strDecoration = "line-through";
}

void CTextDecorationStyle::setUnderline()
{
    m_strDecoration = "underline";
}

QString CBorderWidthStyle::toString()
{
    return m_strWidth;
}

void CBorderWidthStyle::setWidth(int width)
{
    m_strWidth = QString("border-width:%1px;").arg(width);
}

void CBorderWidthStyle::setWidth(int top, int right, int bottom, int left)
{
    m_strWidth = QString("border-width:%1px %2px %3px %4px;").arg(top).arg(right).arg(bottom).arg(left);
}

void CBorderWidthStyle::setWidth(int top, int right)
{
    m_strWidth = QString("border-width:%1px %2px;").arg(top).arg(right);
}

QString CBorderStyle::toString()
{
    return m_strStyle;
}

void CBorderStyle::setSolid()
{
    m_strStyle = QString("border-style:solid;");
}

void CBorderStyle::setStyle(QString style)
{
    m_strStyle = QString("border-style:%1;").arg(style);
}

void CBorderStyle::setStyle(QString top, QString right, QString bottom, QString left)
{
    m_strStyle = QString("border-style:%1 %2 %3 %4;").arg(top).arg(right).arg(bottom).arg(left);
}

void CBorderStyle::setStyle(QString top, QString right)
{
    m_strStyle = QString("border-style:%1 %2;").arg(top).arg(right);
}

QString CBorderColor::toString()
{
    return m_color;
}

void CBorderColor::setColor(CColor color)
{
    m_color = QString("border-color:%1;").arg(color.getValue());
}

void CBorderColor::setColor(CColor top, CColor right, CColor bottom, CColor left)
{
    m_color = QString("border-color:%1 %2 %3 %4;").arg(top.getValue()).arg(right.getValue()).arg(bottom.getValue()).arg(left.getValue());
}

void CBorderColor::setColor(CColor top, CColor right)
{
    m_color = QString("border-color:%1 %2;").arg(top.getValue()).arg(right.getValue());
}

QString CBorderRadius::toString()
{
    return m_strRadius;
}

void CBorderRadius::setRadius(int nRadius)
{
    m_strRadius =QString("border-radius:%1px;").arg(nRadius);
}

void CBorderRadius::setRadius(int nHRadius, int nVRadius)
{
    m_strRadius =QString("border-radius:%1px %2px;").arg(nHRadius).arg(nVRadius);
}

void CBorderRadius::setRadius(int topleft, int toprRight, int bottomRight, int bottomLeft)
{
    m_strRadius =QString("border-top-left-radius:%1px;").arg(topleft);
    m_strRadius +=QString("border-top-right-radius:%1px;").arg(toprRight);
    m_strRadius +=QString("border-bottom-right-radius:%1px;").arg(bottomRight);
    m_strRadius +=QString("border-bottom-left-radius:%1px;").arg(bottomLeft);
}

QString BorderImage::toString()
{
    return m_strBorderImage;
}

void BorderImage::setImage(QString image)
{
    m_strBorderImage = QString("border-image:url(%1);").arg(image);
}

void BorderImage::setImage(QString image, int slice)
{
    m_strBorderImage = QString("border-image:url(%1) %2 stretch stretch;").arg(image).arg(slice);
}

void BorderImage::setImage(QString image, int sliceTop, int sliceRight, int sliceBottom, int sliceLeft, QString HRepeat, QString VRepeat)
{
    m_strBorderImage = QString("border-image:url(%1) %2 %3 %4 %5 %6 %7;").arg(image).arg(sliceTop).arg(sliceRight).arg(sliceBottom).arg(sliceLeft)
            .arg(HRepeat).arg(VRepeat);
}

QString CBorder::toString()
{
    return m_strBorderr;
}

CBorder::CBorder(int width, CColor color, QString style)
{
    this->setBorder(width,color,style);
}

void CBorder::setBorder(int width, CColor color, QString style)
{
    m_strBorderr = QString("border:%1px %2 %3;").arg(width).arg(style).arg(color.getValue());
}

QString CPadding::toString()
{
    return m_strPadding;
}

void CPadding::setPadding(int padding)
{
    m_strPadding = QString("padding:%1px;").arg(padding);
}

void CPadding::setPadding(int top, int right, int bottom, int left)
{
    m_strPadding = QString("padding:%1px %2 %3 %4;").arg(top).arg(right).arg(bottom).arg(left);
}

QString CMargin::toString()
{
    return m_strMargin;
}

void CMargin::setMargin(int margin)
{
    m_strMargin = QString("margin:%1px;").arg(margin);
}

void CMargin::setMargin(int top, int right, int bottom, int left)
{
    m_strMargin = QString("margin:%1px %2 %3 %4;").arg(top).arg(right).arg(bottom).arg(left);
}

QString CBackgroundAttachment::toString()
{
    return QString("background-attachment:%1;").arg(m_strAttachment);
}

void CBackgroundAttachment::stetScroll()
{
    m_strAttachment = "scroll";
}

void CBackgroundAttachment::stetFixed()
{
    m_strAttachment = "fixed";
}

QString CBackgroundClip::toString()
{
    return m_strClip;
}

void CBackgroundClip::setMargin()
{

    m_strClip = QString("background-clip:margin;");
}

void CBackgroundClip::setBorder()
{
    m_strClip = QString("background-clip:border;");
}

void CBackgroundClip::setPadding()
{
    m_strClip = QString("background-clip:padding;");
}

void CBackgroundClip::setContent()
{
    m_strClip = QString("background-clip:content;");
}

QString CBackgroundOrigin::toString()
{
    return m_strOrigin;
}

void CBackgroundOrigin::setMargin()
{
    m_strOrigin = QString("background-origin:margin;");
}

void CBackgroundOrigin::setBorder()
{
    m_strOrigin = QString("background-origin:border;");
}

void CBackgroundOrigin::setPadding()
{
    m_strOrigin = QString("background-origin:padding;");
}

void CBackgroundOrigin::setContent()
{
    m_strOrigin = QString("background-origin:content;");
}

圆图

border-image: url(:/photo.jpg);
min-width:  100px;
max-width:  100px;
 min-height: 100px;
 max-height: 100px;
 border-radius:50px;
  border-width: 0 0 0 0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值