Russian Qt Forum
Ноябрь 27, 2024, 01:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: qmenu с большими иконками  (Прочитано 19460 раз)
spectre71
Гость
« Ответ #15 : Июнь 24, 2009, 12:01 »

Это не стандартное поведение. Где вы встречали в меню не стандартные иконки? Так что feature request обломают. Да и не нужно оно. Хотите устанавливать размер иконок, пишите свою реализацию меню.
В чем нестандартность?
Я не вижу причин против.
Не всегда нормальные иконки для меню можно нарисовать 16x16. Иногда требуется больший размер.
Естественно что размер иконок для QMenu должен быть единым как и для QToolBar.
А писать свою реализацию меню из-за этого Плачущий
Записан
SABROG
Гость
« Ответ #16 : Июнь 24, 2009, 12:05 »

Размеры берутся из стилей. Создай свой стиль и переопредели метод:
int QStyle::pixelMetric ( PixelMetric metric, const QStyleOption * option = 0, const QWidget * widget = 0 ) const   [pure virtual]

На QStyle::PM_SmallIconSize возвращай свой размер. Максимум, что это поможет сделать - увеличить размер иконок (правда неизвестно где это еще может всплыть). Без редактирования исходников Qt сделать разный размер иконок не получится, поэтому единственным выходом будет сделать максимально возможный размер, который предполагается и врисовывать в этот QPixmap иконки меньшего размера самому.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #17 : Июнь 24, 2009, 12:12 »

Размеры берутся из стилей. Создай свой стиль и переопредели метод:
int QStyle::pixelMetric ( PixelMetric metric, const QStyleOption * option = 0, const QWidget * widget = 0 ) const   [pure virtual]

На QStyle::PM_SmallIconSize возвращай свой размер. Максимум, что это поможет сделать - увеличить размер иконок (правда неизвестно где это еще может всплыть). Без редактирования исходников Qt сделать разный размер иконок не получится, поэтому единственным выходом будет сделать максимально возможный размер, который предполагается и врисовывать в этот QPixmap иконки меньшего размера самому.

хм, нда. Одна из немногих вещей, за которые я "люблю" Qt - иногда приходится использовать такое черезжопное решение, что мама не горюй Веселый Да, со стилями я уже сталкивался - надо было убрать рамку фокуса с некоторых элементов, оказалось тоже надо наследовать и править стиль,  и в нём drawPrimitive(). Отсеивать "свои" виджеты от "несвоих" можно по какому-нибудь property. Ну что-ж, если более прямого способа нет, будет смотреть на этот...  В замешательстве
Записан
spectre71
Гость
« Ответ #18 : Июнь 24, 2009, 12:15 »

Размеры берутся из стилей. Создай свой стиль и переопредели метод:
int QStyle::pixelMetric ( PixelMetric metric, const QStyleOption * option = 0, const QWidget * widget = 0 ) const   [pure virtual]

На QStyle::PM_SmallIconSize возвращай свой размер. Максимум, что это поможет сделать - увеличить размер иконок (правда неизвестно где это еще может всплыть). Без редактирования исходников Qt сделать разный размер иконок не получится, поэтому единственным выходом будет сделать максимально возможный размер, который предполагается и врисовывать в этот QPixmap иконки меньшего размера самому.
Создавать свой стиль ради этого - точно бред.
К тому-же это не должно зависить от стиля. Размер иконок на QToolBar не зависит от стиля!
Размер по умолчанию, да, должен(или может) зависить от стиля.
А про разные размеры иконок речь уже давно не идет, действительно кто хочет поизвращаться пусть рисует их соответствующим образом.
Записан
SABROG
Гость
« Ответ #19 : Июнь 24, 2009, 12:28 »

Цитировать
Создавать свой стиль ради этого - точно бред.

Что лучше, хоть какое-то решение или никакого?
Записан
Karl-Philipp
Гость
« Ответ #20 : Июнь 24, 2009, 12:37 »

Цитировать
Создавать свой стиль ради этого - точно бред.

Что лучше, хоть какое-то решение или никакого?
Друзья, если не горит, давайте подождём ответ на feature request из Trolltech? Улыбающийся
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #21 : Июнь 24, 2009, 12:49 »

да бог с ними, с разными размерами для всех элементов. Через pixelMetric удалось хотя бы одного, нестандартного, размера достичь. По-быстрому набросал исходник для проверки, кому надо в аттаче.
Записан
SABROG
Гость
« Ответ #22 : Июнь 24, 2009, 12:55 »

А попробуй через эту штуку сделать - QWidgetAction

нагуглил такой код
Код:
QWidgetAction* action = new QWidgetAction;
QLabel *lbl = new QLabel ;
lbl->setPixmap("picture.png");
action->setDefaultWidget(lbl);
menu->addAction(action);

Даже картинку нашел примера:

« Последнее редактирование: Июнь 24, 2009, 13:05 от SABROG » Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #23 : Июнь 24, 2009, 13:06 »

А попробуй через эту штуку сделать - QWidgetAction

возможно подойдёт для вставки каких-то своих виджетов как на скрине, но беглый осмотр выявил что такие элементы меню не подсвечиваются мышью при наведении.
Записан
SABROG
Гость
« Ответ #24 : Июнь 24, 2009, 13:13 »

подсвечиваются мышью при наведении.

С другой стороны это и хорошо, раздолье то какое, написать свою подсветку в paintEvent'e можно. Думаю это должно быть не намного сложно, тем более если задача специфическая, то можно и свой виджет написать типа ThumbnailPreviewItem. Всё-таки это лучше, чем глобально менять стиль.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #25 : Июнь 24, 2009, 13:15 »

С другой стороны это и хорошо, раздолье то какое, написать свою подсветку в paintEvent'e можно. Думаю это должно быть не намного сложно, тем более если задача специфическая, то можно и свой виджет написать типа ThumbnailPreviewItem. Всё-таки это лучше, чем глобально менять стиль.

теоретически, можно и не глобально, есть же

Цитировать
void QWidget::setStyle ( QStyle * style )
Записан
SABROG
Гость
« Ответ #26 : Июнь 24, 2009, 13:37 »

Это да, главное, чтобы при этом у пользователя не было возможности менять стиль в программе, а то у меню будет один стиль motif какой-нибудь, а у программы другой.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.113 секунд. Запросов: 23.