У меня есть составной элемент управления в 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);
}
Надеясь, что он активируется в состоянии наведения родителя, но ничего не делает.
Есть ли способ сделать это чисто в таблицах стилей?
Если нет, есть ли способ передать родительское состояние наведения его дочерним элементам в коде?
Может быть, с обработчиком событий, имеющим дело с QEvent::HoverMove
или же QEvent::HoverEnter
а также QEvent::HoverLeave
где вы можете установить атрибут Qt::WA_Hover
на ваш лейбл.
Я не пробовал, но это должно работать как причины HoverEnter и HoverLeave update()
функция должна быть вызвана.
Других решений пока нет …