为按钮控件Qt Widgets样式表定义多种样式

时间:2017-08-08 15:13:40

标签: qt qtstylesheets

如何在一个样式表中为一种控件定义多个样式?所以后来的开发人员可以选择,应该采用什么样的样式控件。

例如,我需要为QPushButton定义两种样式:普通按钮(左侧)和动作按钮(右侧)

enter image description here

对于第一个按钮,我写了以下样式:

QPushButton {
    background-color: #DCDCDC;
    border: 1px solid #BEBEBE;
}
...

这适用于项目中的所有QPushButtons。接下来我还需要为QPushButtons定义另一个动作样式,但应该由开发人员选择。我怎么能这样做?

我期待这样的事情:

QPushButton#ActionButton* {
    background-color: blue;
    border: 1px solid darkerblue;
}

然后,如果开发人员将以“ActionButton”(例如“ActionButtonSendRespond”)开头指定他的按钮的objectName,那么它将使用第二种样式。

1 个答案:

答案 0 :(得分:2)

您可以将QPushButton子类化为ActionButton,这样您就可以编写特定的CSS:

C ++

#include <QPushButton>

class ActionButton : public QPushButton
{
    Q_OBJECT
public:
    using QPushButton::QPushButton;
};

CSS:

QPushButton {
    background-color: #DCDCDC;
    border: 1px solid #BEBEBE;
}
ActionButton {
    background-color: blue;
    border: 1px solid darkerblue;
}

然后,当开发人员使用一个类或另一个类时,他们知道将应用哪种样式。如果您还需要更改子类中的行为,它会很有用。