Найти - Пользователи
Полная версия: Как сделать разный размер иконок для QMenuBar и QToolBar?
Начало » GUI » Как сделать разный размер иконок для QMenuBar и QToolBar?
1
Vittorio
Хочу сделать, чтобы в QMenuBar иконки QAction были 16х16, а в QToolBar - 24х24. Сделал *.ICO файл с несколькими слоями соответствующих размеров. В Qt Designer всё отображается как надо, но после компиляции в *.py получается, что и меню, и тулбар используют только первый слой ICO-файла.

Прошу помощи с правильным решением данной задачки. Нагуглил одну ссылку 2005 года, в которой говорилось, что на тот момент решения не было, может быть сейчас что-то изменилось?
PEHDOM
Vittorio
но после компиляции в *.py получается, что и меню, и тулбар используют только первый слой ICO-файла.
посмотрите в .py чего там прописано по поводу иконок.
Вплоть до того что пропишите QMenuBar или QToolBar, (где там у вас не хватает) setWindowIcon принудительно.
Vittorio
Нашёл, как исправить, единственное не знаю, насколько это грамотно.
Когда в Qt Designer создавал в “Редакторе действий” действие и привязывал значок посредством “Choose File…”, в компилированном *.py это выглядело как
 icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("UIs\\../icons/copy.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)

Если сей код вручную поменять на
 icon = QtGui.QIcon("UIs\\../icons/copy.ico")
то всё работает, как задумывалось.
Rodegast
> Сделал *.ICO файл с несколькими слоями

Неужели этим старьём ещё кто то пользуется?

> Хочу сделать, чтобы в QMenuBar иконки QAction были 16х16, а в QToolBar - 24х24

У QMenuBar и QToolBar должны быть определены методы setIconSize вот ими и выставляй размер.
Vittorio
Rodegast
У QMenuBar и QToolBar должны быть определены методы setIconSize вот ими и выставляй размер.
У QMenuBar из коробки нет метода setIconSize (PyQt 5.15.4). Его надо самостоятельно писать?
Vittorio
В итоге всё решилось проще. Qt Designer совместно с pyuic5 генерят следующие участки кода для иконок действий:
 icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("copy.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
Их надо заменить строкой:
 icon = QtGui.QIcon("copy.ico")

> Неужели этим старьём ещё кто то пользуется?
А есть какой-то более новый способ сделать разные версии иконок под их разный размер?
Rodegast
> А есть какой-то более новый способ сделать разные версии иконок под их разный размер?

Qt умеет хорошо масштабировать изображения. Разные иконки под разный размер уже не делают.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB