2

私が持っているもの:-

QFrame を拡張するカスタム ウィジェットがあります (QFrame には既に動作している paintEvent 実装があるため、QWidget の代わりに)。mousePressed() および mouseReleased() をオーバーライドして、pressed()、released() および clicked() シグナルを発行しました。この時点までのすべてが、期待どおりにうまく機能しています。

私が必要なもの:-

このカスタム ウィジェットは基本的なスタイル シートをサポートしており、:hover 状態を問題なくサポートしています。しかし、:pressed 状態は機能しません。これが QFrame/QLabel などでサポートされていない bcoz であることは既にわかっています。:pressed 状態をサポートするために何をする必要があるか知りたいです。押されたものと解放されたもの、または何か他のものに属性/プロパティを設定する必要がありますか?

4

2 に答える 2

2

プロパティを自分QLabel(または使用しているウィジェット) に設定し、そのプロパティの値を変更できます。次に、そのプロパティをスタイルシートで使用します。

例:

this->setStyleSheet("*[myproperty=\"true\"] { background-color: red }");
d_label = new QLabel("dynamic label", this);
d_label->setProperty("myproperty", false);

次に、mousePressEvent で設定し、mouseReleaseEvent でそのプロパティの設定を解除します。

d_label->setProperty("myproperty", true); // or false when you wish to unset it
style()->unpolish(d_label);
style()->polish(d_label); // force a stylesheet recomputation
于 2013-08-07T13:20:55.050 に答える
0

必要なスタイルで、mousePressEvent および mouseReleaseEvent で「setStyleSheet()」を実行できますか?

于 2013-08-07T12:48:15.280 に答える