• QSS的应用


    盒子模型:

    • margin  边距
    • border   边框
    • padding 内边距
    • content  内容

     常用的一些属性:

    background背景
    background-color背景颜色
    background-image背景图片
    background-position对齐方式
    border-(top、left、bottom、right)边界
    border-color-(top、left、bottom、right)边界颜色
    border-image边框图像
    border-radius边框半径
    border-style边框样式
    border-width边框高度
    color文本颜色
    font字体
    font-family字体种类
    font-size字体大小
    font-style字体风格
    font-weight字体粗细
    height子控件的高度
    width子控件的宽度
    top botton left  right上下左右的偏移量
    icon图标
    icon-size图标大小
    image图片
    image-position图片位置
    margin边距
    max-(height、width)最大长度和宽度
    min-(height、width)最小长度和宽度
    opacity透明 0为透明255不透明
    padding内边距
    position   relative|absolute相对坐标  绝对坐标
    selection-background-color所选文本或项目的背景
    selection-color所选文本或项目的前景
    spacing间距
    text-align对齐方式

    border-style

    none无样式
    solid实线
    double双线
    dashed虚线
    inset凹陷
    outset突出
    dotted点划线
    groove槽状

    例一:盒子的使用

    1. QPushButton
    2. {
    3. background-color: rgb(161, 227, 255);//背景颜色
    4. font: 75 10pt "Arial";//字体
    5. border:1px;//边框大小
    6. border-style:solid;//边框风格
    7. border-color:rgb(255, 25, 217);//边框颜色
    8. min-height:200px;
    9. min-width:200px;
    10. margin:10px;//外边距
    11. padding:10px;//内边距
    12. }

     例二:实现一个圆形控件

    把一个QPushButton拖入ui界面中,设置控件大小为(100,100)

    1. QPushButton
    2. {
    3. background-color: rgb(244, 255, 140);//背景颜色
    4. border-radius:50%;//半径
    5. }

     例三:伪状态的使用

    1. QPushButton
    2. {
    3. background-color: rgb(244, 255, 140);
    4. border-radius:50%;
    5. }
    6. QPushButton:hover
    7. {
    8. background-color: rgb(95, 255, 87);
    9. }
    10. QPushButton:pressed
    11. {
    12. background-color: rgb(255, 15, 19);
    13. }

    起始状态:

    鼠标悬停:

     鼠标点击:

     

    使用文件导入样式表

    步骤为:

    • 添加qss文件:  点击新建文件  选择 General  Empty File   创建qss文件
    • 创建资源文件:点击新建文件  选择 Qt  QtResource File  创建资源文件
    • 资源文件中添加qss文件:创建一个前缀,前缀中添加qss文件
    • 获取该qss文件的路径:右键再资源文件中的qss文件 点击Copy Path,获取路径

    1.首先右键点击项目:

     2.选择General   Empty File

    3.文件名为 myqss.qss(前缀可以随意)

    然后可以编写qss

    在ui中添加一个QPushButton 控件

    在myqss.qss中添加以下信息

    4.然后再添加一个资源文件 

     文件名为resource

    创建好后点击 Add Prefix

     前缀可以自己设置

     然后添加文件,点击Add Files,选择你的qss文件

     添加完后,点击左下角的构建项目,完成文件的添加

    widget.h文件中添加

    1. #include//头文件
    2. QFile *file=nullptr//添加一个文件对象

    在 widget.cpp中实现对myqss.qss的使用

    获取myqss.qss的文件路径

    1. file=new QFile(":/qss/myqss.qss",this);
    2. file->open(QFile::ReadOnly);//只可读
    3. QString style=tr(file->readAll());//读取信息
    4. qApp->setStyleSheet(style);//设置样式
    5. file->close();//关闭文件

    样式添加完成:效果和上面的伪状态的使用相同

    不规则窗体

    主要通过Qt中的mask(部件遮挡)来实现不规则窗体。

    实现功能为,去除窗口边框,实现不规则窗体,使用鼠标左键可以移动窗体,点击右键关闭窗体

    在widget中添加:

    1. void paintEvent(QPaintEvent *event);//画家事件
    2. void mousePressEvent(QMouseEvent *event);//鼠标点击事件
    3. void mouseMoveEvent(QMouseEvent *event);//鼠标移动事件
    4. QPoint point;//获得位置

    在widget.cpp中添加:

    1. //头文件
    2. #include
    3. #include
    4. #include

    添加资源文件:

     

    构造函数中添加:

    1. QPixmap p(":/image/456.png");
    2. p=p.scaled(300,300);//重置图片大小
    3. resize(p.size());
    4. setMask(p.mask());
    5. setWindowFlags(Qt::FramelessWindowHint);//设置无窗口框架边界

     事件的实现:

    1. void Widget::paintEvent(QPaintEvent *event)//画家事件
    2. {
    3. QPainter painter(this);//创建一个画家
    4. painter.drawPixmap(0,0,QPixmap(":/image/456.png"));//绘制图片
    5. }
    6. void Widget::mousePressEvent(QMouseEvent *event)//鼠标点击事件
    7. {
    8. if(event->button()==Qt::LeftButton)//左键
    9. {
    10. point=event->globalPos()-frameGeometry().topLeft();//获取位置差
    11. event->accept();
    12. }
    13. if(event->button()==Qt::RightButton)//右键
    14. {
    15. close();//关闭窗口
    16. }
    17. }
    18. void Widget::mouseMoveEvent(QMouseEvent *event)//鼠标移动事件
    19. {
    20. if(event->buttons()&Qt::LeftButton)//左键移动的话
    21. {
    22. move(event->globalPos()-point);//移动窗体
    23. event->accept();
    24. }
    25. }

    效果

     

     

  • 相关阅读:
    统计学习方法 决策树
    01 创建前端项目【小白入门SpringBoot + Vue3】
    深入理解AQS之CountDownLatch
    React 开发必须知道的 34 个技巧【近1W字】
    基于SSH的网上购书系统设计与实现
    Halide 配置 visual studio
    双指针算法专题(2)
    【Linux】详解线程第一篇——由单线程到多线程的转变
    【Node.js】深度解析node的包和强大的包管理工具
    PHP+Redis 发布订阅
  • 原文地址:https://blog.csdn.net/qq_45303986/article/details/127893601