5

我正在尝试使用 Qt 样式表对标准小部件进行一些重设计。因此,在通过#objectName选择器为不同的小部件手动完成大部分操作后,我决定以某种方式对类似的小部件进行分组。

例如,我有多个QFrames内部表单中的标题。我希望他们都拥有相同的样式表。一种方法是使用命名约定(这是我的后备变体),即QFrame[objectName|="prefix_"]. 但我想按类对我的小部件进行分组。所以我创建了简单的占位符类:

class HeaderFrame: public QFrame
{
public:
    HeaderFrame(QWidget *parent = NULL): QFrame(parent) {}
};

这使我能够将所有这些推广QFramesHeaderFrames. 之后我尝试设置

HeaderFrame { background-color: red; }

样式表到 MainWindow 对象本身(使其作用于所有 HeaderFrames),但它不起作用。QtCreator 表单设计器中没有任何变化,编译应用程序后也没有任何变化。我尝试了这个样式表的不同变体,但没有任何效果。

那么,是否只有 Qt 小部件(如 QLabel、QFrame 等)可用于这种样式?或者有一些方法可以为您的推广小部件编写样式表?

4

2 回答 2

3

是的,有可能。您应该记住的唯一一件事 - 派生小部件的基础应该支持样式表,并仔细重新实现它们的 PaintEvent。

UPD:示例类:

class Header1Label : public QLabel
{
    Q_OBJECT
    public:
    Header1Label(QWidget *parent = 0):QLabel(parent){};
    ~Header1Label(){};
};

样式表:

Header1Label
{
    font-size:14px;
    font-weight:900;    
}
于 2011-06-30T10:09:25.743 回答
0

您始终可以添加class-name到对象的类属性,即 QStringList,并使用.class-name选择器。

于 2015-12-21T05:57:51.513 回答