首页 > 解决方案 > 样式表与自定义样式冲突

问题描述

我使用我创建的类创建了一种样式,它通常为该项目中使用的所有按钮提供某种样式......但在某些情况下,我需要在按钮的样式上添加更多内容。所以我使用了样式表,这使得一些样式消失了(比如背景颜色)

原始结果:

在此处输入图像描述

样式表添加:

border-radius: 5px;
border: 1px solid red;

结果:

在此处输入图像描述

样式类:标题:

#ifndef MYSTYLE_H
#define MYSTYLE_H

#include <QPalette>
#include <QProxyStyle>
#include <QStyleFactory>


class MyStyle : public QProxyStyle {
    Q_OBJECT

public:
    MyStyle();

    explicit MyStyle(QStyle *style);

    QStyle *baseStyle() const;

    void polish(QPalette &palette) override;

private:
 QStyle *styleBase(QStyle *style = Q_NULLPTR) const;
};

#endif // MYSTYLE_H

资源:

#include "mystyle.h"

MyStyle::MyStyle() : MyStyle(styleBase()) {}

MyStyle::MyStyle(QStyle *style) : QProxyStyle(style) {}

QStyle *MyStyle::baseStyle() const { return styleBase(); }

QStyle *MyStyle::styleBase(QStyle *style) const
{
    static QStyle *base =
        !style ? QStyleFactory::create(QStringLiteral("Fusion")) : style;
    return base;
}

void MyStyle::polish(QPalette &palette)
{
    palette.setColor(QPalette::Button, QColor(53, 53, 53));
    palette.setColor(QPalette::ButtonText, Qt::white);
}

标签: qt

解决方案


推荐阅读