0

border-imagea のプロパティの設定に問題がありますQToolButton(後で a でもQPushButton問題が発生すると思います)。QToolButtonカスタム ボタン (およびQPushButtonそれぞれから継承) には、非アクティブ、実行中、エラーの 3 つの状態が必要です。

非活性:

style = 'border-top-right-radius: ' + str(self.cornerRadius) + 'px; border-bottom-right-radius: ' + str(self.cornerRadius) + 'px; border-top-left-radius: ' + str(self.cornerRadius) + 'px; border-bottom-left-radius: ' + str(self.cornerRadius) + 'px; border-image: url("' + self.icon  + '"); background: none;'

ランニング:

style = 'border-top-right-radius: ' + str(self.cornerRadius) + 'px; border-bottom-right-radius: ' + str(self.cornerRadius) + 'px; border-top-left-radius: ' + str(self.cornerRadius) + 'px; border-bottom-left-radius: ' + str(self.cornerRadius) + 'px; border-image: url("' + self.icon  + '"); background: rgb(89, 205, 139);'

エラー:

style = 'border-top-right-radius: ' + str(self.cornerRadius) + 'px; border-bottom-right-radius: ' + str(self.cornerRadius) + 'px; border-top-left-radius: ' + str(self.cornerRadius) + 'px; border-bottom-left-radius: ' + str(self.cornerRadius) + 'px; border-image: url("' + self.icon  + '"); background: rgb(215, 56, 56);'

ここself.cornerRadiusで、ボタンの丸みをピクセル単位で決定するために使用される数値でありself.icon、どこかから取得したアイコンです。

ボタンのコンストラクターで行うことは (他の単純な初期化の中でも)、

self.setStyleSheet(style)

ボタンの信号は、システムの新しい状態に関してclicked()( を使用するスタイルと共に) 状態が変更される同じクラスのスロットに接続されます。self.setStyleSheet(...)

なんらかの理由で、ツールチップが「属する」ボタンのスタイルの変更を受け取ります。

ここに画像の説明を入力

Qt のドキュメントを再確認しましたが、この動作を説明する理由がわかりません。ツールチップのスタイルをまったく変更したくありません。これを修正する方法はありますか?

4

1 に答える 1

2

私は質問を次のように解釈します。

あるウィジェット タイプ用のスタイルが別のウィジェット タイプと重複しないようにするにはどうすればよいですか?

次の点に注意してください。

  • スタイルシートは、親ウィジェットから子ウィジェットに伝播されます。
  • スタイルシートには、タイプに対して明示的に設定できる可視性があります。


    myObj.setStyleSheet("QPushButton {border: 0.05em solid lightgray;}" )

スタイルシートを型で囲むだけQType { ... }です。

私は C++ Qt しか扱っていませんが、PyQt も同じスタイルシート システムを使用していると思います。

于 2016-04-20T15:17:13.580 に答える