gpt4 book ai didi

c++ - 在 QPushButton 的子类的构造函数中设置 CSS

转载 作者:行者123 更新时间:2023-11-30 05:38:07 25 4
gpt4 key购买 nike

我正在通过子类化 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
}


编辑:对于 future 的读者,如果您遇到类似的问题(即 Qt 似乎忽略了您在代码中设置的 CSS),请查看您是否没有编辑对象的 styleSheet Qt Creator 中的属性 - 在属性列表中向下滚动并确保 styleSheet是空的而且不是粗体 - 这就是我的问题。如果它是粗体,则表示 Qt 仍在使用该空字段作为对象的 CSS,从而覆盖您的样式。要清除它,请点击 Qt Creator 中该字段旁边的小箭头或打开 .ui 文件并删除 <styleSheet> XML 属性。

感谢 JMik 为我指明了正确的方向。

最佳答案

设置样式表的性能成本高得惊人,尤其是在为嵌入式系统开发时。

我建议,如您所说,使用全局样式表并指定类名,如下所示:

CustomPushButton { background-color: black; }

这样所有 CustomPushButton 都将具有相同的样式,并且对象的创建时间会更短。

至于它在您的情况下不起作用的原因,我猜您可能在创建 CustomPushButton 后不小心再次更改了样式表。

我在我这边测试了你的代码并且它有效,所以它可能与你没有显示的代码有关

关于c++ - 在 QPushButton 的子类的构造函数中设置 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32932810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com