我想做的是将自定义 CSS 应用于派生自的自定义小部件QLabel
但我没有运气。
我将自定义类定义为:
class CustomLabel : public QLabel {
}
我还没有重新实现paintEvent
鉴于标准,我认为功能QLabel
支持CSS样式表,我只需要在CSS中引用这个新的小部件,例如:
CustomLabel {
background-color: #111111;
font-size: 18px;
font-weight: bold;
}
不幸的是,在运行时,没有应用任何样式CustomLabel
和默认值QLabel
应用样式。
任何人都可以建议为什么我的 CSS 规则被忽略CustomLabel
?
重新创建的步骤
- 使用 Qt Creator 创建 Qt Widgets 项目
- 添加派生自的自定义类
QLabel
并称之为CustomLabel
- Add a
QLabel
使用设计器到表单上
- 将标签推广为
CustomLabel
class
-
使用以下代码应用样式表main.cpp
:
a.setStyleSheet("CustomLabel {font-weight: bold;}");
运行程序并注意如何CustomLabel
样式不符合 CSS 样式。
你应该使用宏Q_OBJECT
在你的里面CustomLabel
定义,否则CustomLabel
Qt 的类型系统不知道:
class CustomLabel : public QLabel {
Q_OBJECT
}
MCVE
自定义标签.h:
#include "QLabel"
class CustomLabel : public QLabel {
Q_OBJECT
};
主要.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 ();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)