5

Qt スタイル シートを使用して、標準ウィジェットを大幅に再設計しようとしています。#objectNameそのため、セレクターによってさまざまなウィジェットに対してほとんどの作業を手動で行った後、何らかの方法で同様のウィジェットをグループ化することにしました。

たとえばQFrames、内部フォームのヘッダーのように機能するものが複数あります。そして、それらすべてに同じスタイルシートが必要です。それを行う1つの方法は、命名規則を使用することです(これは私のフォールバックバリアントです)、つまりQFrame[objectName|="prefix_"]. しかし、ウィジェットをクラスごとにグループ化したかったのです。そこで、単純なプレースホルダー クラスを作成しました。

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

これにより、これらすべてを に昇格させることができましQFramesHeaderFrames。その後、設定してみました

HeaderFrame { background-color: red; }

スタイルシートを MainWindow オブジェクト自体に追加します (すべての HeaderFrame で動作させるため) が、機能しません。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 に答える