Russian Qt Forum

Qt => Вопросы новичков => Тема начата: MadShmit от Август 25, 2012, 12:23



Название: Создать компонент похожий на выбор маркерованного списка в MS Office
Отправлено: MadShmit от Август 25, 2012, 12:23
Здравствуйте!

   Я пытаюсь реализовать компонент вида как во вложении (как в MS Office 2010, при выборе типа маркера).
   Идея следующая – компонент состоит из двух QWidgetов. Первый содержит две кнопки первая кнопка выполняет действие, а вторая со стрелкой по нажатию на которую появляется второй виджет. Второй QWidget содержит то что я захочу.
   У меня возникла следующая проблема. Предполагается, что кнопка может располагаться где угодно. QWidget должен иметь родителя, чтобы рассчитать координаты. Если кнопка на форме, то понятно как рассчитать – второй виджет получает родителя форму и относительно неё рассчитываю координаты, а если кнопка на QToolBar, то кого делать родителем выпадающего QWidgeta и как рассчитать координаты кнопки?
   Я подумал, что проблему можно решить так:
   Выпадающему QWidget (второму выджету) не выставлять потомка, позволить ему появляться как отдельному окну, только без полей и отображения на панели задач, но тогда возникает вопрос, как вычислить координаты кнопки относительно экрана, в том числе и на QToolBar.
Пожалуйста подскажите как это можно сделать, или может, подскажите более лучшую идею реализации.
Заранее спасибо!


Название: Re: Создать компонент похожий на выбор маркерованного списка в MS Office
Отправлено: GreatSnake от Август 26, 2012, 12:37
Для таких вещей нужно использовать QMenu, которое через
Код
C++ (Qt)
void QToolButton::setMenu ( QMenu * menu )
связывается с кнопкой, которая сама будет располагать меню.
Элементы этого меню устанавливаются через QWidgetAction.


Название: Re: Создать компонент похожий на выбор маркерованного списка в MS Office
Отправлено: MadShmit от Август 29, 2012, 19:55
Спасибо большое. Вы мне очень помогли.  :)
P.S. Всё получилось.