1つのcssファイルにすべてのスタイルを保持する場合、Qtで同じタイプ(QPushButtonなど)のコンポーネントに異なるスタイルを自由に割り当てるにはどうすればよいですか?
はい、QtDesignerからこれを実行できるようにすることをお勧めします(私たちは邪悪な自虐行為者ではなく、誰もが砂糖を愛しています)
質問への少しの背景または何とか何とか
私の人生のほとんどのコードはGUIから来ていたのです。 このコードは、さまざまな言語とプラットフォームでさまざまな時期に作成されました。 最後に、今私はQtでITをやっています。 Qtの前は、Flex(Adobe Flex)でも同じことをしていました。 その前に、WinForms、MFC、VCLなどがありました。 実際、これらすべてを次の目的で伝えています。
1)上記のすべてを想定して、最も便利なUI開発ツールはFlexであることが判明しました。
私見:WPFとQtの最新バージョンは、Flexの優れたものすべてを採用しているため、これを確認しています
2)私が遭遇した問題の核心に持ち込む。
Flexには、CSSという非常に便利なスキニングツールがありました。
Flexでの使用例:インターフェースでは、緑、赤、青のボタンを使用します。 CSSファイルに、greenButton、redButton、blueButtonの3つのスタイルを作成します。 そして、型に登り、緑にしたいボタンにstyleName = "greenButton"プロパティを設定します(他の色の場合)。
次にQtに移動します。 ここにはCSSメカニズムもあり、さらに、ここでははるかに機能的です。 しかし。 質問です。 質問を参照
ソリューションを検索する
Qt-shnyh cssの説明を見てください。 セレクターのような重要な概念があります。 これは、実際にはスタイルがオブジェクトに適用されるかどうかに基づいて特定の条件です。 セレクターとは何ですか:
1)タイプごと。 つまり スタイルは、このタイプのすべてのコントロールに適用されます(たとえば、QPushButtonタイプのすべてのオブジェクト)
ニフィガは私には似合わない。 私のボタンはすべてQPushButtonタイプですが、そのうちのいくつかは1つのスタイルを作成し、他のいくつかは作成したいです。
ここで告白する必要があります。 私はそれについて話すことを恥じています。 正直に。 しかし、最後の瞬間まで、私はこのセレクターを適用することだけを目的としてQPushButtonの下位クラスを作成することに専念しました。 つまり クラスGreenButton:public QPushButton、RedButton:public QButtonなどを作成しました。 そしてQTDesignerで、QPushButtonを自分のクラスの1つに昇格させました。これは、スタイルに課したいスタイルによって異なります。 ここ。 蹴らないでください。
2)名前で。 一度は転がりません。
3)プロパティの値によって。
ここにある。 それでいいでしょう。 QWidgetにtypeタグのプロパティがあり、他の機能に影響を与えずに何かを書くことができる場合に適しています。
そして今、私の答え。
私の答え
ごく最近、QtDesignerで緑色の十字を突然見つけました。 いいえ、彼は常にそこにいました、私は頑固に彼を無視しました。 このクロスは、動的プロパティをオブジェクトに追加することが判明しました。 まあ、実際には全体の答え:)
つまり この例では、ボタン(greenButtonStyleを適用する)を追加するだけです。greenButton = true [QtDesignerまたはsetProperty( "greenButton"、QVariant(true));]を介して]]
そして、CSSでは次のように記述します。
QPushButton[greenButton="true"]<br>
{<br>
greenButtonStyle content;<br>
}<br>
<br>
QPushButton[redButton="true"]<br>
{<br>
redButtonStyle content;<br>
}<br>
<br>
and so on<br>
これがそのような倒錯です。
たぶん誰かが解決策をよく知っていますか?
あなたは最高を知っていますか? 教えて