LINUX.ORG.RU

[Qt]Вставить картинку в элемент QComboBox

 


0

0

Добрый вечер!
Имеется необходимость добавлять к каждому элементу из выпадающего списка небольшую картинку (дабы упростить выбор). Возможно ли это стандартными средствами Qt?
Нашел возможность вставить иконку, но она получается шибко маленькая, исключительно 16х16, даже если текст в комбобоксе огромного размера.
Заранее благодарю


Ответ на: комментарий от Gorthauer

Пока не раскурил, как мне поможет QAction.
Но разглядел в доках свойство iconSize. Выглядит в итоге довольно костыльно, но если ничего не придумается, придется оставить так.
Вообще, я пока только разбираюсь с кути и многого не знаю, может можно как-то использовать другой виджет в качестве одного из Item'ов комбобокса?

umvr
() автор топика

Пользуясь случаем задам свой вопрос.
Хочу сделать адрес-бар как в хромиуме. Т.е., по сути, это тот-же комбобокс, но перед текстом рендерится иконка + в конце виджета рендерится иконка. Обе иконки - кнопки.
Пока есть идея реимплементить paintEvent и в нём рисовать пикчи. Однако кнопки... Да и в хромиуме они как родные от виджета.
Может кто-нить даст совет?

tia
()
Ответ на: комментарий от MikeDM

Логично, К.О. Однако меня интересовал сам метод добавления таких «кнопок». Может в qt «красивее» сделать как иначе.
Да и интересует как правильнее сделать отступ от первой пикчи-кнопки. Не пробелами же делать.

tia
()
Ответ на: комментарий от tia

не стремись к «красоте» делай логично и просто.

рекомендую почитать Макса Шлее, он достаточно хорошо описывает кути.

MikeDM ★★★★★
()
Ответ на: комментарий от MikeDM

Да... хороший кирпичик. Да и стоит...
Может что ещё из литературы посоветуешь? В конце концов на сях не первый год пишу, да и Qt в далёкие времена немного юзал.
А к «красоте» пока не стремлюсь, просто внезапно стало интересно решение такой «проблемы».

tia
()
Ответ на: комментарий от tia

у Бланшет и Саммерфильд тоже неплохой кирпичик, сейчас его и читаю как раз

umvr
() автор топика
Ответ на: комментарий от tia

Неужели есть какой-то смысл читать всякие левые книжки по кьют? В Ассистанте ведь есть всё, что надо, даже больше. Или официальная документация нынче не в моде?

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

Понимаешь, документация это хорошо. Я и без неё сделаю(хотя, хз), благо автокомплит хороший и функционал интуитивный.
Однако не красиво получится, когда, оказывается, для моих целей создан специальный класс, который я даже искать не подумал. Или есть способ легче.
Важен опыт. Я спрашиваю именно про опыт. Что вы бы сделали, как опытный Qt-кодер?

tia
()
Ответ на: комментарий от yoghurt

Официальная документация всегда в моде.
Только ответы там объедененны в виде «вот этот виджет умеет то, то и то». Если же мне необходимы ответы на вопросы типа «А какой виджет умеет вот так?» - тогда в официальной документации не знаешь, куда и копать. В этом случае как раз и помогают книги сторонних авторов.

trex6 ★★★★★
()
Ответ на: комментарий от tia

>Что вы бы сделали, как опытный Qt-кодер?

Я на куте в последний раз что-то писал года так три назад :)

Если речь идёт о браузерном адрессбаре, у которого кнопки-иконки по бокам, и ещё список выпадающий, то лично бы я посмотрел , как это сделано в Arora http://upload.wikimedia.org/wikipedia/commons/1/18/Arora_Webbrowser.png

А вообще, на крайний случай, сделал бы свой виджет, который
1. Внешне рисуется как line edit
2. Внутри себя содержит QHbox, в котором
2.1 Иконка-кнопка с прозрачным фоном
2.2 Безрамочный line edit
2.3 Иконка-кнопка с прозрачным фоном

yoghurt ★★★★★
()

cb = new QComboBox(w); cb->setModel(model); cb->setIconSize(QSize(32, 32));

как-то так...

unC0Rr ★★★★★
()
Ответ на: комментарий от yoghurt

Ох блин, я и забыл что арора имеет такой бар. Спасибо, да.
И за логику спс, я то такую гуйню почти никогда не делал, хватало простого гуя на глейд или сложного(но понятно что черезжопного ибо нет контейнеров) винапи.

tia
()
Ответ на: комментарий от tia

Это исходники ароры или что? Асистант говорит, что у QComboBox нет метода addWidget().

chemikadze
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.