Это просто то, как QPushButton
обрабатывает состояния (и, следовательно, режим / состояние значка), что отличается от QToolButton
. Более конкретно, это то, как текущий подкласс QStyle
использует информацию о состоянии кнопки для рисования значка. Например, вот код QPushButton::paintEvent()
(следите за ним, чтобы увидеть вызов initStyleOption()
, где инициализируются данные состояния), затем параметры стиля передаются в настоящее время активному QStyle
(который может быть например, WindowsVista / Macintosh / Fusion / StyleSheets в зависимости от ОС или настроек). Затем, если мы посмотрим, например, соответствующий QFusionStyle
код , мы увидим, что режим icon Active
используется только тогда, когда кнопка имеет фокус . Или то же самое в QCommonStyle
(к которым все стили Windows / WindowsVista / Macinto sh все возвращаются).
Чтобы обойти это, вы можете использовать CSS и установить image
свойство для состояния QPushButton:hover
или реализуйте свой собственный метод QProxyStyle::drawControl()
для элемента управления CE_PushButtonLabel
.
CSS: QPushButton:hover { image: url(/path/to/icon.png); }