1

アプリケーションのテーマをサポートしようとしていますが、QPushButton の状態 (デフォルト、ホバー、押された状態など) に基づいてアイコンを変更する必要があるという問題に遭遇しています。QPushButton のアイコンを設定するために使用するものは次のとおりです。

QPushButton#playButton {
    qproperty-icon: url(":/light/icons/play_light.png");
}

ホバー状態は私の暗いテーマのアイコンを必要とする背景を使用するため、これを使用して他のものに変更しようとしました:

QPushButton#playButton:hover {
    qproperty-icon: url(":/dark/icons/play_dark.png");
}

これを行うと、play_light.png表示は正常に行われますが、状態が変化しませんplay_dark.png

私の Python コードでは、再生時に再生ボタンが停止ボタンに変わるので、私のスタイルでは、カスタム プロパティを使用してそのアイコンに設定します。

QPushButton#playButton[isPlaying="true"] {
    qproperty-icon: url(":/light/icons/stop_light.png");
}

これは私も変わりません。そこで、ボタンのスタイルをリセットするコードをオンラインで見つけました。これは次のようになります。

self.ui.playButton.setProperty('isPlaying', not isEnable)
self.ui.playButton.setStyle(qApp.style())

状態が変化するたびに、すべてのボタンにこの回避策を使用したくありません。以前にこの問題に遭遇したことがありますか?

これをご覧いただきありがとうございます。

4

3 に答える 3

0

理解した。どのアイコンがどのアイコンに移動するかがわかるように、アイコンをフォームに保持しましたが、スタイルシートで次のようにしました。

QPushButton#searchNext {
    qproperty-icon: none;
    image: url(":/light/icons/down_light.png"); 
}

次に、私のホバーで:

QPushButton#searchNext:hover {
    image: url(":/dark/icons/down_dark.png");   
}

カスタム プロパティを変更するときはまだコードが必要でしたself.ui.playButton.setStyle(qApp.style())が、それ以外の場合は問題なく動作します。

于 2013-12-13T23:51:09.693 に答える