Russian Qt Forum

Qt => Вопросы новичков => Тема начата: virtual_root от Август 29, 2012, 13:05



Название: Qwidget in Qcombobox
Отправлено: virtual_root от Август 29, 2012, 13:05
Всем привет! Ребята, подскажите, может кто уже делал подобное. Мне нужно в  qcombobox встроить Qwidget. Чтобы он(Qwidget) был в качетсве выпадающего списка. Но как это сделать, что-то не пойму ??? Искала в google, но подобного не нашла. Раньше приходилось встраивать QTreeView, но это легко получилось.
Подскажите, у кого есть идеи, пожалуйста)


Название: Re: Qwidget in Qcombobox
Отправлено: GreatSnake от Август 29, 2012, 17:05
Интересно, а зачем нужен сей изврат?


Название: Re: Qwidget in Qcombobox
Отправлено: Dr.Vlad от Август 31, 2012, 06:02
Строишь класс наследника от QComboBox и экспериментируешь в своё удовольствие.
Но в QComboBox есть очень много private: методов, которые могут не позволить сделать такое.


Название: Re: Qwidget in Qcombobox
Отправлено: xokc от Август 31, 2012, 08:15
Без особенных проблем с помощью void QComboBox::setView(QAbstractItemView *itemView) можно вставить лишь наследника QAbstractItemView. Если же нужно другое поведение я бы делал собственный виджет из комбинации QLineEdit + QToolButton.


Название: Re: Qwidget in Qcombobox
Отправлено: virtual_root от Август 31, 2012, 09:40
спасибо всем! xokc, мне понравилась ваша идея. QToolButton позволяет в себе разместить любое количество картинок и мне это удобно. Остаётся только вопрос как связать QLineEdit с QToolButton?
И если создавать свой компонент мне бы больше подошел не QLineEdit  а QLabel(или QPushButton) чтобы можно было отображать выбранную картинку. Но как связать их между собой, чтобы по щелчку на QLabel показывался его QToolButton ?
Ведь если я просто рядом расположу и буду скрывать QToolButton, то будут проблемы с внедрением моего компонента в меню формы того же  QToolButton.
Смотрела свойства компонентов QLabel и QToolButton но что-то ничего связывающего между ними не нашла...


Название: Re: Qwidget in Qcombobox
Отправлено: xokc от Август 31, 2012, 09:55
Как-то сумбурно всё - не совсем понимаю, какого поведения всё-таки добиться хотите.
Но как связать их между собой, чтобы по щелчку на QLabel показывался его QToolButton ?
Ведь если я просто рядом расположу и буду скрывать QToolButton, то будут проблемы с внедрением моего компонента в меню формы того же  QToolButton.
Если я правильно всё понял, то нужно взять QWidget или QFrame в качестве контейнера, разместить в нём требуемые QLabel и QToolButton с использованием QHBoxLayout и уже этот контейнер внедрять туда, куда нужно.


Название: Re: Qwidget in Qcombobox
Отправлено: virtual_root от Август 31, 2012, 10:12
ага попробую. Мне просто нужен combobox в котором можно разместить картинки и выбирать их, а при выборе какой-либо я её подгружаю. Но и хочу чтобы можно было мой combobox разместить на панели меню) Если я создам свой контейнер, мне в любом случае придется получается скрывать на время QtoolButton, а когда пользователь нажмет на QLabel он должен выпадать QToolButton как в QCombobox. И я боюсь когда захочу свой контейнер засунуть как иконка меню в другой QtoolButton, то не получится чтоб выпадал мой находящийся внутри QtoolButton....


Название: Re: Qwidget in Qcombobox
Отправлено: xokc от Август 31, 2012, 10:46
ага попробую.
Стало только хуже :).

Но и хочу чтобы можно было мой combobox разместить на панели меню)
Может тогда ограничиться popupmenu?

И я боюсь когда захочу свой контейнер засунуть как иконка меню в другой QtoolButton, то не получится чтоб выпадал мой находящийся внутри QtoolButton....
Вот тут мой мозг окончательно взорвался. Может есть пример другого приложения, где этот функционал уже реализован?


Название: Re: Qwidget in Qcombobox
Отправлено: virtual_root от Август 31, 2012, 10:50
например в word есть выпадающая цветная палитра. Мне нужно что-то вроде такого combobox) Там под палитрой в word размещается еще и действия и мне так надо...


Название: Re: Qwidget in Qcombobox
Отправлено: virtual_root от Август 31, 2012, 10:51
в qt палитра выпадает сразу как форма, где можно и цвет выбрать, а палитры быстрого доступа я не нашла.. можно было бы тогда(если конечно возможно) посмотреть как они такое реализовали


Название: Re: Qwidget in Qcombobox
Отправлено: GreatSnake от Август 31, 2012, 10:52
Мде, как всё запущено...
В который раз подтверждается элементарная лень ТС и отсутствие малейшего желания исследовать ассистент.
Откройте описание QToolButton и почитайте конец абзаца (http://www.doc.crossplatform.ru/qt/4.7.x/qtoolbutton.html#details).
В общем, решение здесь (http://www.prog.org.ru/index.php?topic=22861.msg161439#msg161439).

PS. извиняюсь за столь резкий ответ, но в следующий раз лучше сразу опишите, что хотите получить, а не пытайтесь найти решение нестандартными способами.


Название: Re: Qwidget in Qcombobox
Отправлено: virtual_root от Сентябрь 01, 2012, 11:26
спасибо, попробую. Подскажите, пожалуйста кто знает, как получить глобальные координаты виджета. Например: на одной форме QMainWindow располагаю другую (встраиваю). Мне нужно узнать  координаты встроенной формы по x и y относительно рабочего стола. Когда использую QDesktopWidget::screenGeometry он мне возвращает всё время 0. А через this->x() получаю координаты относительно формы.


Название: Re: Qwidget in Qcombobox
Отправлено: virtual_root от Сентябрь 01, 2012, 12:28
уже нашла, всем спасибо!
mapToGlobal(QPoint(this->x(),this->y()));


Название: Re: Qwidget in Qcombobox
Отправлено: Странник от Сентябрь 01, 2012, 13:54
уже нашла, всем спасибо!
mapToGlobal(QPoint(this->x(),this->y()));
Код:
mapToGlobal(this->pos());


Название: Re: Qwidget in Qcombobox
Отправлено: virtual_root от Сентябрь 03, 2012, 10:25
спасибо) Я всё-таки сделала свой combobox как и хотела! Без QMenu.