C++ 在设计器和代码中为我的自定义小部件设置CSS

C++ 在设计器和代码中为我的自定义小部件设置CSS,c++,qt,qtstylesheets,qpushbutton,C++,Qt,Qtstylesheets,Qpushbutton,我有一个自定义小部件,子类来自QPushButton,MyButton。它在一个.cpp文件中实现,我在应用程序表单的Qt Creator中使用它(我添加了一个QPushButton,然后将其升级为MyButton) 正如这里所讨论的:我希望在其构造函数中设置CSS(按钮的一般外观、背景图像、悬停行为等),但我也希望能够在Qt Creator中设置CSS(可能自定义字体大小/颜色;通常特定于特定按钮) 问题是,当发出setupUi调用时,我的按钮被创建,它们在构造函数中设置样式,但随后Qt应用在

我有一个自定义小部件,子类来自
QPushButton
MyButton
。它在一个
.cpp
文件中实现,我在应用程序表单的Qt Creator中使用它(我添加了一个
QPushButton
,然后将其升级为
MyButton

正如这里所讨论的:我希望在其构造函数中设置CSS(按钮的一般外观、背景图像、悬停行为等),但我也希望能够在Qt Creator中设置CSS(可能自定义字体大小/颜色;通常特定于特定按钮)

问题是,当发出
setupUi
调用时,我的按钮被创建,它们在构造函数中设置样式,但随后Qt应用在Qt Creator中设置的样式,立即覆盖我的样式


我该怎么做才能达到这个效果?

这似乎一点也不简单。我会尝试在覆盖的
showEvent
中合并样式表。但除非样式表相对简单,否则解析CSS(或QSS)并不是一件容易的事。也许您可以尝试简单地预先添加(或追加)您的默认样式表,看看它是否有效。@Rostislav好吧,问题是:是框架覆盖了我的样式(在
setupUi
),所以我无法控制它。如果我的CSS是在Qt应用Qt Creator中的设置之后设置的,那么这可能会起作用。这是一个拐杖。我们能看一个简单的代码示例吗?通常,在setupUi完成后调用setStyleSheet或进行任何样式修改都不会有问题。另外,不要抛弃Qt Creator。@MildWolfie不打算这样做,我实际上非常喜欢它,而且我认为在编写UI时没有理由不使用它的设计器。无论如何,
setupUi
负责应用Qt-Creator中的样式表集。如果在此之后调用
setStylesheet
,它将覆盖以前的任何样式,除非我这样连接它:
setStylesheet(styleSheet().append(newStyleSheet))。但是,
setupUi
函数在我的
setStylesheet
调用之后执行,所以这没有用。这看起来一点也不简单。我会尝试在覆盖的
showEvent
中合并样式表。但除非样式表相对简单,否则解析CSS(或QSS)并不是一件容易的事。也许您可以尝试简单地预先添加(或追加)您的默认样式表,看看它是否有效。@Rostislav好吧,问题是:是框架覆盖了我的样式(在
setupUi
),所以我无法控制它。如果我的CSS是在Qt应用Qt Creator中的设置之后设置的,那么这可能会起作用。这是一个拐杖。我们能看一个简单的代码示例吗?通常,在setupUi完成后调用setStyleSheet或进行任何样式修改都不会有问题。另外,不要抛弃Qt Creator。@MildWolfie不打算这样做,我实际上非常喜欢它,而且我认为在编写UI时没有理由不使用它的设计器。无论如何,
setupUi
负责应用Qt-Creator中的样式表集。如果在此之后调用
setStylesheet
,它将覆盖以前的任何样式,除非我这样连接它:
setStylesheet(styleSheet().append(newStyleSheet))。但是,
setupUi
函数在调用我的
setStylesheet
后执行,因此这没有用。