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

Qt开发经验 --- 避坑指南(4)

文章目录

    • @[toc]
      • 1.1 Qt自定义控件是样式表无效的解决方法;
      • 1.2 QAbstractSpinBox设置+-图标无效问题
      • 1.3 Qss设置自定义属性
      • 1.4 QSpinBox样式

更多精彩内容
👉内容导航 👈
👉Qt开发经验 👈

1.1 Qt自定义控件是样式表无效的解决方法;

  1. 在构造函数设置属性:this->setAttribute(Qt::WA_StyledBackground);(最好)

  2. 改成继承QFrame,因为QFrame自带paintEvent函数已做了实现,在使用样式表时会进行解析和绘制;

  3. 新实现QWidget的paintEvent函数时,使用QStylePainter绘制;

    void MyWidget::paintEvent(QPaintEvent* e)
    {QStyleOption option;option.init(this);QPainter p(this);style()->drawPrimitive(QStyle::PE_Widget, &option, &p, this);
    }
    

1.2 QAbstractSpinBox设置±图标无效问题

  • QAbstractSpinBox类及其子类控件支持通过buttonSymbols属性设置使用上下箭头图标、加减图标,但我们常常发现buttonSymbols设置了PlusMinus后还是无法显示加减图标

  • 这个问题我不知道是不是qt bug还是使用的问题;

  • 解决办法: 通过qss加上边框样式border: 2px solid red;就可以了;

    在这里插入图片描述

    在这里插入图片描述

1.3 Qss设置自定义属性

  • widget.h

    class Widget : public QWidget
    {Q_OBJECTQ_PROPERTY(QColor color READ color WRITE setColor )   // 定义属性
    public:Widget(QWidget *parent = nullptr);~Widget();void setColor(QColor value);   // 设置属性函数QColor color();                // 返回函数private slots:void on_pushButton_clicked();private:Ui::Widget *ui;QColor m_color;    // 成员属性
    };
    
  • widget.cpp

    
    Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
    {ui->setupUi(this);qApp->setStyleSheet("Widget{qproperty-color: red;}");   // 加载Qss样式表ui->lineEdit->setText(this->m_color.name());            // 获取属性值(这里获取不到)
    }Widget::~Widget()
    {delete ui;
    }/*** @brief         设置属性值,Qss调用这个函数* @param value*/
    void Widget::setColor(QColor value)
    {m_color = value;
    }QColor Widget::color()
    {return m_color;
    }void Widget::on_pushButton_clicked()
    {ui->lineEdit->setText(this->m_color.name());   // 获取属性值
    }
    
  • 实现效果: 从图中可以看见,加载Qss后再构造函数中无法获取到属性值,也就是说在构造函数中还没生效;

  • 注意: 最好是使用qApp设置Qss,否则如果使用this设置则其它窗口无法获取到qss。

在这里插入图片描述

1.4 QSpinBox样式

在这里插入图片描述

QSpinBox  {background-color: rgb(0, 255, 255);border-image: url(:/C:/Users/MHF/Pictures/1.png);   /* 输入部分背景*/color: rgb(255, 255, 255);border: 2px solid #FF0000;margin-left: 30px;        /* 左边距 */margin-right: 30px;       /* 右边距*/
}
/* 设置使用加减图标的样式*/
QAbstractSpinBox::up-button {subcontrol-origin: border;subcontrol-position: right;border: 1px solid grey;width: 30px;height: 30px;right: -30px;background-color: rgb(255, 255, 255);
}QAbstractSpinBox::down-button {subcontrol-origin: border;subcontrol-position: left;border: 1px solid grey;width: 30px;height: 30px;left: -30px;background-color: rgb(255, 255, 255);
}


http://www.dtcms.com/a/175071.html

相关文章:

  • 十分钟了解 @MapperScan
  • LeetCode 热题 100 22. 括号生成
  • 大学之大:隆德大学2025.5.6
  • JSON 转换为 Word 文档
  • SLAM算法工程师面经大全:2025年面试真题解析与实战指南
  • 个人Unity自用面经(未完)
  • Three.js 基础与实践
  • JavaSE核心知识点01基础语法01-04(数组)
  • QQMUSIC测试报告
  • 双目标清单——AI与思维模型【96】
  • 智能机器人赋能小天互连IM系统,打造高效办公新生态
  • cephadm部署ceph集群
  • Flowable7.x学习笔记(二十)查看流程办理进度图
  • 从零开始学习人工智能Day6-Python3标准库概览
  • 【AI提示词】六顶思考帽工具专家
  • 智能学习空间的范式革新:基于AI驱动的自习室系统架构与应用研究
  • 使用DevTools工具调试前端页面,便捷脚本,鸿蒙调试webView
  • PyTorch常用命令详解:助力深度学习开发
  • day18-API(常见API,对象克隆)
  • yolov8 输出数据解释
  • 游戏的TypeScript(6)TypeScript的元编程
  • Spring 中四种常见初始化方法,对比 static {} 和 @PostConstruct 在并发,Spring 加载顺序大致为: JVM 加载类
  • 4.29 tag的完整实现和登录页面的初步搭建
  • Python 数据智能实战 (13):AI的安全可靠 - 电商数据智能的红线与指南
  • qt国际化翻译功能用法
  • 哈尔滨服务器租用
  • 亿级流量系统架构设计与实战(四)
  • 第九节:图像处理基础-图像几何变换 (缩放、旋转、平移、翻转)
  • 数据结构(一)——线性表的顺序表示和实现
  • Xcode16提交App Store审核时提示bitcode报错