значок qt qtoolbutton размыт

У меня возникла проблема, из-за которой значки, используемые на QToolButtons на QMenu, прикрепленном к QToolButton, выглядят размытыми. Я пробовал разные размеры 24x24, 32x32, 64x64, разные форматы, такие как png и svg, но это всегда выглядело странно. На изображении вы можете видеть выбранное действие, а верхнее действие в меню имеет тот же значок, но тот, что в меню, размыт. Даже выбранный не очень резкий.

размытый значок

Есть ли какое-то конкретное руководство для этих значков или что я делаю неправильно? Второй и третий значок — это встроенный значок, который, как мне кажется, 24x24 svg, но мне не удалось его воспроизвести.


person Damir Porobic    schedule 27.09.2016    source источник
comment
Может быть, ваша иконка занимает не полный пиксель, а немного смещена и интерполирована между пикселями? Попробуйте подтолкнуть фактическое содержимое значка, чтобы увидеть, станет ли оно лучше. Перейдите по этой ссылке dutchicon.com/articles/pixel-perfect.   -  person dtech    schedule 27.09.2016
comment
Я попробовал это только сейчас, и это может быть действительно как-то связано, хотя я не могу настроить его в нужном направлении. Я использую редактор пикселей, который привязывается к пикселю, и если я перемещаюсь на один пиксель вверх, нижняя часть линии становится размытой, когда я перемещаюсь вниз, верхняя часть размыта. Пробовал также с векторными изображениями и привязкой к пиксельной сетке, но все равно размыто...   -  person Damir Porobic    schedule 28.09.2016
comment
Ваше изображение может быть привязано к пикселю, но Qt также может влиять на масштаб или положение. Эти вещи, вероятно, также различаются в зависимости от платформы и стиля графического интерфейса.   -  person dtech    schedule 28.09.2016
comment
Скачал изображение view-fullscreen svg 24x24 с github .com/KDE/breeze-icons/blob/master/icons/actions/24/ и загрузил его напрямую, и он тоже был размытым. Таким образом, в основном значок загрузки, такой как QIcon::fromTheme( "view-fullscreen" ), не размыт, а загрузка, как QIcon(":/currentWindow.svg"), размыта. Может я неправильно загружаю?   -  person Damir Porobic    schedule 28.09.2016
comment
Похоже, что вызов QIcon::fromTheme( "view-fullscreen" ) на самом деле может вернуть 3 разных размера: 16x16, 22x22 и 24x24. Сегодня я попытаюсь выяснить, могу ли я установить три разных размера в файле ресурсов и просто указать один и тот же псевдоним для всех трех из них.   -  person Damir Porobic    schedule 28.09.2016
comment
Изучив это дальше, похоже, что при загрузке из темы он действительно загружает значок соответствующего размера, поэтому значок одного размера не используется, что объясняет поведение, с которым я сталкиваюсь. Вот очень хорошее объяснение того, как создать собственную тему значков (см. внизу): mithatkonar.com/wiki/doku.php/qt/icons Позже будет проверено решение Явная сборка и привязка значков во время выполнения.   -  person Damir Porobic    schedule 28.09.2016


Ответы (1)


Да, вам нужно установить разные размеры значков, если вы хотите, чтобы они хорошо смотрелись под QToolButon и в QMenu, QT подберет размер, который подходит лучше всего. Одно из возможных решений, если вы используете файлы ресурсов, может быть таким:

QIcon *myQIcon = new QIcon;
myQIcon->addFile(":icon24.svg", QSize(24,24));
myQIcon->addFile(":icon16.svg", QSize(16,16));

mMyQAction->setIcon( *myQIcon );

Подробное объяснение можно найти здесь: http://mithatkonar.com/wiki/doku.php/qt/icons

person Damir Porobic    schedule 28.09.2016