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

elr*_*cbk 5 qt stylesheet qt-creator qtstylesheets

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

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

class HeaderFrame: public QFrame
{
public:
    HeaderFrame(QWidget *parent = NULL): QFrame(parent) {}
};
Run Code Online (Sandbox Code Playgroud)

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

HeaderFrame { background-color: red; }
Run Code Online (Sandbox Code Playgroud)

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

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

Rai*_*aiv 3

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

class Header1Label : public QLabel
{
    Q_OBJECT

public:
    using QLabel::QLabel;
};
Run Code Online (Sandbox Code Playgroud)

样式表:

class Header1Label : public QLabel
{
    Q_OBJECT

public:
    using QLabel::QLabel;
};
Run Code Online (Sandbox Code Playgroud)