MonoKelvin 2024-07-29 21:57 采纳率: 40%
浏览 15

QT代码中如何获取qss中的属性

比如在qss中给QPushButton设置了样式:

QPushButton {
    color: white;
    background-color: black;
}

在代码中重写了QPushButton类,需要重绘:

void AButton::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);

    painter.setPen( /* 想要获取qss设置的文本颜色 */ );
    painter.setBrush( /* 想要获取qss设置的背景色 */ );

    QPainterPath path;
    path.addEllipse(rect());
    painter.setClipPath(path);

    painter.drawRect(rect());
    
    ...
}

如上Pen和Brush的颜色都想从qss中获取,不想定义其他的属性或者写死颜色。问题是有什么办法在代码中获取到qss的属性值(不只是颜色,可能有边框、背景图片等需求)?

  • 写回答

1条回答 默认 最新

  • 火花20180731 2024-07-30 09:47
    关注
    
    const styleSheet = "QPushButton {"
                                  "color: %1;"
                                  "background-color: %2;"
                                  "}";
    class Global {
    public:
    static Global &Instance() 
        { 
            static Global _instance; 
            return _instance;
        }
        QString &colorFont() { return mColorFont; }
        QString &colorBgd() { return mColorBgd; }
    private:
        QString mColorFont = "#ffffff";
        QString mColorBgd = "#aaaaaa";
    }
    
    
    Global::Instance().colorFont() = "#bbbbbb";
    Global::Instance().colorBgd() = "#cccccc";
    a.setStyleSheet(styleSheet.arg(Global::Instance().colorFont()).arg(Global::Instance().colorBgd()));
    
    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 7月29日
  • 修改了问题 7月29日
  • 创建了问题 7月29日

悬赏问题

  • ¥15 如何制作永久二维码,最好是微信也可以扫开的。(相关搜索:管理系统)
  • ¥15 delphi indy cookie 有效期
  • ¥15 labelme打不开怎么办
  • ¥35 按照图片上的两个任务要求,用keil5写出运行代码,并在proteus上仿真成功,🙏
  • ¥15 免费的电脑视频剪辑类软件如何盈利
  • ¥30 MPI读入tif文件并将文件路径分配给各进程时遇到问题
  • ¥15 pycharm中导入模块出错
  • ¥20 Ros2 moveit2 Windows环境配置,有偿,价格可商议。
  • ¥15 有关“完美的代价”问题的代码漏洞
  • ¥15 请帮我看一下这个简易化学配平器的逻辑有什么问题吗?