我正在通过继承QPushButton
来创建自定义按钮类。但是出于某种原因,在其构造函数中设置该类的CSS没有任何效果;我必须在例如paintEvent
中进行,然后一切都很好。我可以拥有一个全局.qss
文件并为整个应用程序设置它,但我希望该类管理自己的样式。为什么我的方法不起作用?
代码:
custompushbutton.h
class CustomPushButton: public QPushButton
{
Q_OBJECT
public:
explicit CustomPushButton(QWidget *parent = 0);
~CustomPushButton() = default;
};
custompushbutton.cpp
CustomPushButton::CustomPushButton(QWidget *parent)
: QPushButton(parent)
{
setStyleSheet("background-color: black;"); // this does not work
}
编辑:对于未来的读者,如果您遇到类似的问题(即Qt似乎忽略了您在代码中设置的CSS),请查看您是否编辑了对象{{1 Qt Creator中的属性 - 在属性列表中向下滚动并确保styleSheet
为空并且不是BOLD - 这就是我的问题。如果它是粗体,则表示Qt仍然使用该空字段作为对象的CSS,从而覆盖您的样式。要清除它,请点击Qt Creator中字段旁边的小箭头,或打开.ui文件并删除styleSheet
XML属性。
感谢JMik指出我正确的方向。
答案 0 :(得分:1)
设置样式表的性能成本非常高,特别是如果您正在为嵌入式系统开发。
我建议,就像你说的那样,使用全局样式表并指定类名,如下所示:
CustomPushButton { background-color: black; }
这样所有CustomPushButton
都具有相同的样式,并且该对象将花费更少的时间来创建。
至于它在你的情况下不起作用的原因,我猜你可能在创建CustomPushButton后不小心改变了样式表。
我在我身边测试了你的代码并且它有效,所以它可能与你没有显示的代码有关