Изменить стиль при наведении состояния родительского QWidget в Qt

У меня есть составной элемент управления в Qt, который является QWidget с QHBoxLayout, содержащим 3 субэлемента управления (QWidget> QHBoxLayout> 3 QLabels). На одном из этих элементов управления, который является просто QLabel, отображающим значок, я хочу, чтобы он менял свой значок при наведении курсора на весь элемент управления. Я могу заставить его работать, когда на самом деле завис над этой иконкой

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);
}

Надеясь, что он активируется в состоянии наведения родителя, но ничего не делает.

Есть ли способ сделать это чисто в таблицах стилей?

Если нет, есть ли способ передать родительское состояние наведения его дочерним элементам в коде?

3

Решение

Может быть, с обработчиком событий, имеющим дело с QEvent::HoverMove или же QEvent::HoverEnter а также QEvent::HoverLeave где вы можете установить атрибут Qt::WA_Hover на ваш лейбл.

Я не пробовал, но это должно работать как причины HoverEnter и HoverLeave update() функция должна быть вызвана.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]