是否有可能在Qt Creator中使用Qt样式表和推广的小部件?

时间:2011-06-30 10:01:22

标签: qt stylesheet qt-creator qtstylesheets

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

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

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

这使我可以将所有这些QFrames推广到HeaderFrames。之后我尝试了设置

HeaderFrame { background-color: red; }

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

那么,只有Qt小部件(如QLabel,QFrame等)可以通过这种方式进行样式化吗?或者有一些方法可以为您推广的小部件编写样式表?

1 个答案:

答案 0 :(得分:3)

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

UPD: 例 类:

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

样式表:

Header1Label
{
    font-size:14px;
    font-weight:900;    
}