3

Qt には、3 つのサブ コントロール (QWidget > QHBoxLayout > 3 QLabels) を含む QHBoxLayout を持つ QWidget である複合コントロールがあります。アイコンを表示する単なるQLabelであるこれらのコントロールの1つで、コントロール全体にカーソルを合わせたときにアイコンを変更したいと思います。実際にそのアイコンにカーソルを合わせると、動作させることができます

QLabel#stateIcon {
    image: url(:/icons/stateNormal);
}

QLabel#stateIcon:hover {
    image: url(:/icons/stateHover);
}

ただし、マウスがコントロール全体の上にあるときにホバーアイコンを表示したいと思います

私は次のようなものを試しました:

QLabel#stateIcon::parent:hover {
    image: url(:/icons/stateHover);
}

そしてさえ

QLabel#stateIcon::parent::parent:hover {
    image: url(:/icons/stateHover);
}

親のホバー状態でアクティブになることを期待していますが、何もしません。

これを純粋にスタイルシートで行う方法はありますか?

そうでない場合、コードで親のホバー状態を子に伝達する方法はありますか?

4

1 に答える 1

0

QEvent::HoverMoveまたはQEvent::HoverEnter、属性をラベルにQEvent::HoverLeave設定できる場所を処理するイベントハンドラーを使用する場合があります。Qt::WA_Hover

私は試しませんでしたが、HoverEnter と HoverLeave によってupdate()関数が呼び出されるため、機能するはずです。

于 2012-09-13T16:42:25.480 に答える