我尝试做的是将自定义CSS应用于源自QLabel
的自定义窗口小部件,但我没有运气。
我将自定义类定义为:
class CustomLabel : public QLabel {
}
我没有重新实现paintEvent
函数,因为我认为标准QLabel
支持CSS样式表,我只需要在CSS中引用这个新的小部件,例如:
CustomLabel {
background-color: #111111;
font-size: 18px;
font-weight: bold;
}
不幸的是,在运行时,CustomLabel
没有应用任何样式,并且应用了默认的QLabel
样式。
有人可以建议为什么CustomLabel
忽略我的CSS规则吗?
重新创建的步骤
QLabel
的自定义类,并将其命名为CustomLabel
QLabel
CustomLabel
类使用main.cpp
中的以下代码应用样式表:
a.setStyleSheet("CustomLabel {font-weight: bold;}");
运行程序并注意CustomLabel
未按照CSS样式设置样式。
答案 0 :(得分:1)
您应该在Q_OBJECT
定义中使用宏CustomLabel
,否则Qt的类型系统不知道CustomLabel
:
class CustomLabel : public QLabel {
Q_OBJECT
}
<强> MCVE 强>
CustomLabel.h:
#include "QLabel"
class CustomLabel : public QLabel {
Q_OBJECT
};
main.cpp中:
#include "QApplication"
#include "CustomLabel.h"
int main(int argc, char * argv[])
{
QApplication a(argc, argv);
a.setStyleSheet("CustomLabel {font-weight: bold; background-color: red;}");
CustomLabel label;
label.setText ("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua");
label.show ();
a.exec ();
}
答案 1 :(得分:0)
好的,所以我设法找到了一个&#34;解决方法&#34;而不是正确的答案:使用accessibleName
参数。
因此,在Qt Creator中,将CustomLabel
之类的值分配给accessibleName
的{{1}}字段,并在CSS文件中添加以下内容:
QLabel
答案 2 :(得分:0)
尝试自定义标签的设置Qt::WA_StyledBackground
属性。