2

Qtのスタイルシート機能について質問があります。それは本当に素晴らしいです、しかしそれは機能がまだあまり長く存在していないように感じます、本当ですか?しかし、これは私のGUIをスタイリングする最も簡単な方法です。

  1. スタイルシートに色あせを追加することはできますか?マウスを特定のウィジェットの上に置くと、背景色が急激に変化するのではなく、200ミリ秒程度で新しい色にフェードインします。これには良い方法がありますか、それともコードごとに行う必要がありますか?

  2. 2Dグラデーションを使用できますか?1Dグラデーションの使用方法を知ったので、1つの軸(多くの場合、水平または垂直)で色を徐々に変更できます。その上に、たとえばアルファ値が低い2番目のグラデーションを追加したいと思います。したがって、グラデーションが緑(上)から赤(下)に変化する場合は、透明(左)から白(右)にも変化させたいと思います。

  3. Qtにはタイプ(QPushButtonなど)とID(#mywidgetnameなど)のCSSセレクターがありますが、クラスを選択または設定する方法が見つかりません。たとえば、いくつかのQFrameがあり、特定のサブセットに1つの特定のスタイルを追加したいと思います。フレームにすべて同じ名前(同じID)を付ける必要がありますか?悪いですね。しかし、それらのタイプ(QFrame)を選択することも正しくありません...

ありがとうございました!

4

3 に答える 3

9
  1. 私が知っているCSSを使用していません。ただし、Qtには、さまざまな手法(アニメーションフレームワークを使用)を使用したいくつかの優れたデモがあります。たとえば、デモ/サンプルブラウザを参照してください。

  2. エンドポイントの相対座標を使用して次の構造を使用することで、おそらく#2で必要なことを達成できます。

    qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0.273, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255))
    

    Qt Designerには、グラデーション(および一般的なCSS)用の優れたエディターがあります。これを試してみて、何ができるかを確認し、インスピレーションを得るために使用することをお勧めします。

  3. これを最適に解決する方法はよくわかりませんが、同じルールの前に複数の一致を配置できるため、次のことができます。

    QFrame#frame1, QFrame#frame2 { background-color: blue; }
    
于 2010-09-23T09:53:18.680 に答える
1

これはかなり古い質問ですが、最近同様の問題が発生しました。

とにかく、「3」のために。qssで「プロパティセレクター」を使用して、関連するウィジェットにプロパティ値を設定できることがわかりました。

たとえば、C ++コードの場合:

widget1->setProperty( "StyleClass", "MyCustomLAF" );
widget2->setProperty( "StyleClass", "MyCustomLAF" );

次に、qssで:

QWidget[StyleClass="MyCustomLAF"] { color : purple ; }

次に、「StyleClass」プロパティが「MyCustomLAF」に設定されているQWidget(または派生クラス)インスタンスには、color:purpleスタイルが適用されます。次の説明が少し紛らわしい、または技術的に正しくない場合はご容赦ください。ただし、プロパティ「StyleClass」は、Qtが「動的プロパティ」と呼んでいるものであり、(私の言葉では)QObjectインスタンスに追加されるプロパティを意味します。実行時に、Q_PROPERTYマクロを使用して「メタスタッフ」に登録されることはありません。

于 2016-05-18T02:02:22.150 に答える
0

また、特定の親のすべてのQFrameを選択できます

#ParentName > QFrame#ParentNameの子であるすべてのQFrameを選択します

#ParentName QFrame#ParentNameに含まれるすべてのQFrameとその子を選択します

于 2010-09-23T14:24:50.097 に答える