2012-01-24 28 views
3

私のアプリケーションでは、ユーザーは自分のプログラムのウィジェット(その時点では休眠状態)をクリックし、その色を選択します。
この色は、その特定のウィジェットのスタイルシートに追加されます。Qtウィジェット(Stylesheetで使用する)の変数名を取得しますか?

しかし、プログラムが終了してもう一度起動されると、そのウィジェットにスタイルシートを保持してもらいたいと思います。
私はすべてのウィジェットのスタイルシートでハードコードする必要はありません。実際に、私はむしろ、どの特定のウィジェットがスタイルシートを持っているか知りません。

私が本当にやりたいことは、アプリケーション用の単一のスタイルシートを用意し、クリックした特定のウィジェットに新しい色をコーディングすることです。

(すなわち:私はちょうどのQPushButton赤とどれも他の人のことを希望

ので、それのQPushButtonは、変数名を持っていた場合:ユーザーがのQPushButtonをクリックし、{赤}のスタイルシートを選択した場合。私は
、すべてのウィジェットのためにハードコードする必要があり、それをでこれを行うとしないように)


「のQPushButton#Clicky {赤の色:}」私は追加しますQApplicationsスタイルシートへの
、「Clicky」何とか私のPyQt4ウィジェットの変数名を文字列に変換する必要があります。
どうすればいいですか?

ありがとうございます!

(私はそれらの値からPythonの変数名を取得するのは非常に難しいことができます読んだ;?
は、スタイルシートに追加することができるウィジェットのIDの他のフォームがあります)


その後、オブジェクトの名前が前に、まずsetObjectName( "somenameの")に必要

PyQt4
のpython 2.7.2
のWindows 7

+0

私は一時的にQObject.objectName()で興奮しましたが、これまでサブクラス化されたウィジェットのクラス名(インスタンスではありません)を取得することができました。 –

答えて

6

、objectNameには、()より良い仕事、またはだろう - findChild()、またはfindChildrenを( )

ヘッダー:

QButton foo; 

クラス:

foo = new QButton(); 
foo.setObjectName("MySuperButton"); 

その後、最終的にあなたのQSS中...

#MySuperButton { 
    background: black; 
} 

これも

とCSSと同様に動作します
QButton#MySuperButton { 
    background: red; 
} 

複数のオブジェクト名を(オブジェクトごとに)同様に設定したい、または特定の名前の1つのタイプのウィジェットだけを細かく使用する理由は、CSSとほぼ同じです。

+0

Hmm。私の疑惑はQtデザイナーが自動的に行うのは正しいのですか? –

+0

オブジェクト名を設定しますか? .. 知りません。しかし、かなり簡単に把握する必要があります。 UIを作成してから、qDebug()を実行してください。<< myObject.objectName(); – synthesizerpatel

+1

はい、Qtデザイナーファイル(uicと組み合わされます)は自動的にオブジェクト名を設定します。 –

関連する問題