我有3个小部件的层次结构:
每个小部件都将背景颜色更改为不同的颜色(使用QSS),以便输出如下所示:
这里一切都很好。但是,如果我将widget
提升为从QWidget派生的类,它会像这样消失:
这是我的Custom
小部件的代码:
custom.h:
#ifndef CUSTOM_H
#define CUSTOM_H
#include <QWidget>
class Custom : public QWidget
{
Q_OBJECT
public:
explicit Custom(QWidget *parent = 0);
};
#endif // CUSTOM_H
custom.cpp:
#include "custom.h"
Custom::Custom(QWidget *parent) :
QWidget(parent)
{
}
任何人都可以解释为什么这些奇怪的事情会发生,我该怎样做才能让绿色小部件出现?
答案 0 :(得分:2)
前段时间我已回答a similar question:)
为了让qss样式表适用于直接QWidget
子类,您应该像这样实现paintEvent
:
void Custom::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
答案 1 :(得分:-1)
对于QLineEdit,记得像这个构造函数一样调用/继承基类
QLineEdit_KPE::QLineEdit_KPE(QWidget *parent) :
QLineEditt(parent)
{
}