Russian Qt Forum
Ноябрь 05, 2024, 22:12
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Как разместить текст над иконкой в QToolButton-е?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Как разместить текст над иконкой в QToolButton-е? (Прочитано 6767 раз)
billy4685
Крякер
Offline
Сообщений: 306
Как разместить текст над иконкой в QToolButton-е?
«
:
Февраль 26, 2016, 00:05 »
Доброй ночи, господа форумчане. Буквально пару дней назад передо мной была поставлена задача в приложении разместить на кнопке иконку под текстом. Я сначала подумал, "легко!", так как ранее пользовался QToolButton-ом, и уже размещал неоднократно на нем иконку, и иконку с текстом. Но ранее особо не парился над положением текста по отношению иконки, устанавливая для QToolButton-а свойство toolButtonStyle в ToolButtonTextBesideIcon. А теперь вот была поставлена такая задачка.
Я сразу начал просматривать всевозможные стили в свойстве toolButtonStyle (рисунок ниже). Увы но нет там стандартного свойства расположения текста над иконкой ((. Расстроился. Последующие поиски так и не дали результата, смотрел даже в StyleSheet-е для QToolButton-а, увы не нашел. Может кто-то знает, как разместить текст над иконкой?
«
Последнее редактирование: Февраль 26, 2016, 00:10 от billy4685
»
Записан
Smogg
Гость
Re: Как разместить текст над иконкой в QToolButton-е?
«
Ответ #1 :
Февраль 27, 2016, 04:26 »
рисовать самому?
Записан
poru
Самовар
Offline
Сообщений: 103
Re: Как разместить текст над иконкой в QToolButton-е?
«
Ответ #2 :
Март 01, 2016, 09:24 »
Есть 3 варианта.
1. Переписать drawItemText и drawItemPixmap наследовавшись от QProxyStyle.
2. Переписать paintEvent наследовавшись от QToolButton.
3. В конструкторе формы создать layout с двумя QLable для каждой кнопки.
Я бы выбрал 3-й вариант, он будет содержать ~40 строк кода и простоту понимания в отличие от других вариантов, содержащих ~140 строк кода из которых 95% будет повторять исходники Qt.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Как разместить текст над иконкой в QToolButton-е?
«
Ответ #3 :
Март 01, 2016, 11:38 »
Цитата: poru от Март 01, 2016, 09:24
Я бы выбрал 3-й вариант, он будет содержать ~40 строк кода и простоту понимания в отличие от других вариантов, содержащих ~140 строк кода из которых 95% будет повторять исходники Qt.
И будет выглядеть как откровенное убожество.
Не насилуйте фреймворк, сделайте по п.2.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
poru
Самовар
Offline
Сообщений: 103
Re: Как разместить текст над иконкой в QToolButton-е?
«
Ответ #4 :
Март 01, 2016, 11:49 »
Цитата: Racheengel от Март 01, 2016, 11:38
Цитата: poru от Март 01, 2016, 09:24
Я бы выбрал 3-й вариант, он будет содержать ~40 строк кода и простоту понимания в отличие от других вариантов, содержащих ~140 строк кода из которых 95% будет повторять исходники Qt.
И будет выглядеть как откровенное убожество.
Не насилуйте фреймворк, сделайте по п.2.
Визуально в чем проявляется убожество?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Как разместить текст над иконкой в QToolButton-е?
«
Ответ #5 :
Март 01, 2016, 12:18 »
Я бы отрисовал иконку и текст вверху в буфере с альфой и подсунул бы его кнопке как новую иконку
Записан
poru
Самовар
Offline
Сообщений: 103
Re: Как разместить текст над иконкой в QToolButton-е?
«
Ответ #6 :
Март 01, 2016, 12:37 »
Цитата: Igors от Март 01, 2016, 12:18
Я бы отрисовал иконку и текст вверху в буфере с альфой и подсунул бы его кнопке как новую иконку
Хорошо. Кстати поддерживаемый Racheengel вариант 2 не подразумевает или "закалебет" поддержку QSS, так же как и ваш . По большому счету в.1. самый верный, но тут, если углубиться в исходники, виноваты сами разрабы, что не выделили текст и картинку в отдельные элементы.
«
Последнее редактирование: Март 01, 2016, 12:44 от poru
»
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Как разместить текст над иконкой в QToolButton-е?
«
Ответ #7 :
Март 01, 2016, 14:01 »
Цитата: poru от Март 01, 2016, 11:49
Визуально в чем проявляется убожество?
В том, что это будет 2 кнопки, а не одна.
П.1 возможен, но тогда придется адаптироваться под каждый стиль. Если цель именно в этом, то тогда мы получим N классов стилей с кастомной отрисовкой кнопки.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
poru
Самовар
Offline
Сообщений: 103
Re: Как разместить текст над иконкой в QToolButton-е?
«
Ответ #8 :
Март 01, 2016, 14:49 »
Цитата: Racheengel от Март 01, 2016, 14:01
Цитата: poru от Март 01, 2016, 11:49
Визуально в чем проявляется убожество?
В том, что это будет 2 кнопки, а не одна.
П.1 возможен, но тогда придется адаптироваться под каждый стиль. Если цель именно в этом, то тогда мы получим N классов стилей с кастомной отрисовкой кнопки.
А че только кнопки 2-е )), а не 3-и - два "лэйбла" плюс сама кнопуля, одна область приема message. А в остальном сколько стилей - столько отрисовок. А у тебя в исходниках сколько стилей отрисовывает текст выше картинки?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Как разместить текст над иконкой в QToolButton-е?
«
Ответ #9 :
Март 01, 2016, 14:52 »
[off]
Вот почему такие темы собирают немало постов? Да, ТС наскочил на неудачное место, придется немного попотеть, c'est la vie. Но по существу все уже сказано, все варианты предложены. Нееет, щас будут месить и месить до полного посинения. Что за нездоровый интерес к чисто рутинной работе? О чем-то большом и светлом уже и не мечтаем?
[/off]
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Как разместить текст над иконкой в QToolButton-е?
«
Ответ #10 :
Март 01, 2016, 16:02 »
Цитата: poru от Март 01, 2016, 14:49
А че только кнопки 2-е )), а не 3-и - два "лэйбла" плюс сама кнопуля, одна область приема message. А в остальном сколько стилей - столько отрисовок. А у тебя в исходниках сколько стилей отрисовывает текст выше картинки?
Да я как-то делал что-то подобное, только мне надо было чекбокс и картинку совместить.
Пытался лэйаутом, стало тока хуже, поэтому плюнул и переопределил отрисовку.
Работало более-менее со всеми стилями, просто надо рисовать правильно
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
poru
Самовар
Offline
Сообщений: 103
Re: Как разместить текст над иконкой в QToolButton-е?
«
Ответ #11 :
Март 01, 2016, 16:34 »
Да все нормально, я против твоих домыслов ничего не имею, есть как есть, пацан просил, надо было ему помочь, я дал варианты решения (если надо разложу), у тебя другие есть? Есть, выкладывай конкретно, не только ему одному помогут, нас тут много.....
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Как разместить текст над иконкой в QToolButton-е?
«
Ответ #12 :
Март 01, 2016, 17:39 »
Цитата: poru от Март 01, 2016, 16:34
Да все нормально, я против твоих домыслов ничего не имею, есть как есть, пацан просил, надо было ему помочь, я дал варианты решения (если надо разложу), у тебя другие есть? Есть, выкладывай конкретно, не только ему одному помогут, нас тут много.....
Это мне или не мне
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
billy4685
Крякер
Offline
Сообщений: 306
Re: Как разместить текст над иконкой в QToolButton-е?
«
Ответ #13 :
Март 02, 2016, 12:36 »
Благодарю всем за ответы.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...