QLabel背景问题

时间:2016-06-30 18:48:27

标签: c++ qt background styles qlabel

当我正在使用已应用样式的QLabel时,我遇到了这种情况。每当我尝试更换背景颜色时,我都无法这样做,因为它在某种程度上是透明的。我试图不对背景进行硬编码,而是应用样式。这是代码和一些解释:

#include "fccLabel.h"

FccLabel::FccLabel(QWidget* parent) : QLabel(parent)
{
    this->setFrameStyle(QFrame::StyledPanel);
    this->setStyleSheet("border: 2px solid gray; border-radius: 3px;");
}


void FccLabel::SetBackColor(quint32 c)
{
    QPalette        p;

    p = this->palette();
    this->setAttribute(Qt::WA_TranslucentBackground, false);
    this->setAutoFillBackground(true);
    p.setColor(backgroundRole(), QColor(c));
    this->setPalette(p);
    this->update();
}



void FccLabel::SetTextColor(quint32 c)
{
    QPalette        p;

    p = this->palette();
    p.setColor(QPalette::WindowText, QColor(c));
    this->setPalette(p);
    this->update();
}

,头文件是:

#ifndef FCCLABEL_H
#define FCCLABEL_H

#include <QObject>
#include <QLabel>
#include <QFont>

class FccLabel : public QLabel
{
    Q_OBJECT

public:
    FccLabel(QWidget* parent = 0);

    void    SetBackColor(quint32 c);
    void    SetTextColor(quint32 c);
};

#endif // FCCLABEL_H

使用此代码,文本着色工作正常,但标签保持透明(不受影响)。如果我评论这两行:

this->setFrameStyle(QFrame::StyledPanel);
this->setStyleSheet("border: 2px solid gray; border-radius: 3px;");

背景颜色发生变化。

我也试着做下一步,而没有评论上面的几行:

this->setStyleSheet("background-color: Qt::red;");

背景颜色发生了变化,但是,我再次失去了所有其他样式元素。

我做错了什么?还有其他我可以尝试的东西吗?

0 个答案:

没有答案