В моем проекте я показываю QMenu
с несколькими объектами QAction
. Я хочу, чтобы значок QAction
изменился, когда пользователь на него нависал.Значок QAction Change on Hover
Вот мой текущий код:
QPixmap icons(":/icons/platformIcons.png");
QIcon icon;
icon.addPixmap(icons.copy(0, 0, 16, 16), QIcon::Selected, QIcon::On);
icon.addPixmap(icons.copy(0, 16, 16, 16), QIcon::Selected, QIcon::Off);
ui->actionOpen->setIcon(icon);
Однако значок не изменяется, когда пользователь парит над QAction
. Я пробовал режимы Normal
и Active
, и результат будет таким же. Если я переключаю состояния, значок меняется на обратный, но все равно не изменяется при наведении (или нажмите на это).
Спасибо за ваше время.
Я не использую Mac, и ни мои пользователи. Только Windows. Должен ли я ожидать, что он будет работать в Windows с тем, как я это сделал? Кроме того, мои изображения получены из одного большого изображения, поэтому использование Qt Designer не будет работать для моего использования. – mrg95
У меня нет машины Windows, поэтому я не могу точно сказать, будет ли она работать с родным стилем. Но, по крайней мере, исходя из вашего подхода, он должен работать. Просто имейте в виду, что 'QIcon :: Selected' не относится к меню. Вы хотите использовать 'QIcon :: Normal' (== unhovered) и' QIcon :: Active' (== hovered), тогда как 'QIcon :: Off' и' QIcon :: On' применяются только к проверяемым действиям (т.е. которые имеют проверенное/непроверенное состояние). Один из способов проверить, является ли это вашим кодом или стилем, чтобы запустить приложение с аргументом '-style fusion', который использует стиль виджета Fusion. Это гарантированно работает, если код правильный –
AH! Проблема состояла в том, что мне нужно было установить оба состояния в 'QIcon :: Off'. Я не понимал, что это связано с проверкой или нет. Благодаря :) – mrg95