17

.qssファイルの16進数/RGB番号に変数名を付ける可能性はありますか?ええのために

myColor = #FFCC08
QPushButton { background-color: myColor;}

これにより、スタイルシートの上部で変数を定義し、16進コードを使用する代わりに、必要に応じて変数名を使用できます。また、色を変更する必要がある場合は、1つの場所で変更する必要があり、ファイル全体に反映されます。

Saasも検索しましたが、qtでどのように使用できるかわかりません。

ありがとう :)

4

4 に答える 4

19

独自の小さなSassを非常に簡単に作成できます。

1.変数の定義を含むテキストファイルを作成します。次のような単純な形式を使用します。

@myColor  = #FFDDEE
@myColor2 = #112233 
@myWidth  = 20px

2. qssファイルで変数名を使用します:

QPushButton { 
    background-color: @myColor; 
    min-width: @myWidth;
}

3.両方のファイルを開き、定義ファイルの各変数について、qssファイルでの出現箇所を定義ファイルの値(文字列)に変更します。単純な文字列の置き換えです。

4.前処理されたqssをアプリに適用します。

これが最も簡単な解決策です。アプリの外部で定義ファイルとqssファイルの両方を変更し、コードを再コンパイルせずに適用できます。

于 2012-06-14T11:19:39.980 に答える
5

純粋なQtスタイルシートを使用して、単純に達成しようとしていることは不可能です。

C ++コード内からスタイルシートを変更して再ロードすることで、同様の効果を得ることができます。次に例を示します。

QString myColor = "#FFCC08";
QString styleSheet = "QPushButton { background-color: %1;}";
...
myWidget->setStyleSheet( styleSheet.arg(myColor) );

残念ながら、これにはいくつかの欠点があります(デザイナーでプレビューできない、スタイルシートではなくコードを変更する)が、Qtで達成しようとしていることにほぼ近いです。

于 2012-06-05T14:13:35.683 に答える
1

これがsassを使用した解決策です。まず、Pythonバインディングをインストールします。

pip install sass

次に、それを使用します。

import sys
import sass
app = QApplication(sys.argv)

# Create your sass style sheet (you can also write this in a file and load the file)
style = '''
$bg-dark: #292929;

QPushButton {
color: red;
background-color: $bg-dark;
}
'''.encode('utf-8')

# Compile Sass to CSS
style = sass.compile_string(style).decode()

# And set it to your app
app.setStyleSheet(style)
于 2018-03-19T09:21:25.757 に答える
1

これを実現する別の方法は、動的プロパティを使用することです。これにより、cssクラスをオブジェクトに割り当てるのと同じように、オブジェクトまたはオブジェクトのグループに複数のプロパティを簡単に割り当てることができます。 https://wiki.qt.io/Dynamic_Properties_and_Stylesheets

たとえば、UIファイルで、値が「myStyle1」の文字列動的プロパティ「colorStyle」を追加できます。

ここに画像の説明を入力してください

スタイルシートは次のようになります。

QPushButton[colorStyle='myStyle1'] {
    background-color: #FFCC08;
    ... any other style changes...
}

'myStyle1'を割り当てるQPushButtonは、グローバルに設定した場合、スタイルシートに従います。

于 2020-04-21T21:16:27.157 に答える