crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Меню на панель инструментов... Как ?, Удобство прежде всего
JuryS1806
  опции профиля:
сообщение 28.1.2010, 20:43
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


Всем доброго времени суток. Есть вопрос, как можно меню из главного окна добавить на панель инструментов, при этом чтобы подменю раскрывались не рядом, а ниже.
Интересно поэкспериментировать. А может кто уже делал подобно ? Или все меню перевести в QToolButtons'ы и их кликать.

Еще приложил снимок того как хотелось бы сделать.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.1.2010, 20:47
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


по моему то, что на картинке - QMenuBar воткнутый внутрь QDocWidget
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JuryS1806
  опции профиля:
сообщение 28.1.2010, 22:22
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 28.1.2010, 20:47) *
по моему то, что на картинке - QMenuBar воткнутый внутрь QDocWidget

Приветствую, Юрий.

Сделал так:
QMenuBar *myMenu = new QMenuBar;
myMenu->addMenu(StFunctions);

QDockWidget *myAddMenu= new QDockWidget;
myAddMenu->setWidget(myMenu);

MebPanel = addToolBar( trUtf8( "Вспомогательная панель" ) );
MebPanel->setObjectName("HelperPan");
MebPanel->addWidget(myAddMenu);


Теперь появилось меню, !НО оно ничем не отличается от того, которое находится сверху, нужно каждый раз искать в нем необходимый элемент. А меню, которое я хочу создать очень удобное, потому что его не нужно каждый раз раскрывать и искать нужное. Оно как бы остается открытым постоянно.

Сообщение отредактировал JuryS1806 - 28.1.2010, 22:45
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 28.1.2010, 23:14
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


Цитата(Litkevich Yuriy @ 28.1.2010, 20:47) *
по моему то, что на картинке - QMenuBar воткнутый внутрь QDocWidget

Еще это похоже на отрывное меню (menu->setTearOffEnabled(true)).
Цитата(JuryS1806 @ 28.1.2010, 20:43) *
чтобы подменю раскрывались не рядом, а ниже

По-моему я вразумил :) Только как потом убирать его при ненадобности (в смысле как это преподнесено для пользователя)?
А вообще, это делается легко. Надо отнаследовать от QMenu и добавить метод что-то вроде addActionsOfMenu(QMenu *menu), в котором в конец нашего меню добавляется разделитель и все действия(экшены) переданного меню. Ну и подобную функцию для удаления действий из меню. Чтобы не заморачиваться с поиском "лишнего" разделителя при удалении, в конструкторе надо установитьсвойство setSeparatorsCollapsible(true).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.1.2010, 23:17
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(JuryS1806 @ 29.1.2010, 1:22) *
НО оно ничем не отличается от того, которое находится сверху
Приведи скрин в котором меню (из твоего первого примера) не раскрыто
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JuryS1806
  опции профиля:
сообщение 28.1.2010, 23:43
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


Так вот, задача в том, чтобы например пользователь мог выбрать:

Стандартные функции->Создать->Линии->Притивы->Прямоугольник.

И это меню останется распахнутым до конца сенса. И уже в следующий раз не нужно будет лезть неизвестно куда. При проектировании это экономит уйму времени. Я кстати уже к апрелю готовлюсь к патенту на свою программу.
Думаю что было бы разумно также в программе указать на http://www.forum.crossplatform.ru как на источник для разработки.

Будет указана литература, консультанты по геометрии и если это может быть полезным для форума, то и он соответственно.
Спасибо за помощь. Скрин свернутый прикрепил.

Думаю это больше похоже на QTreeView

Только вот при добавлении акшонов из меню:
for (int i=0;i<StFunctions->actions().size();++i)
{
    theItem[i] = new QToolButton(this);
    theItem[i]->setText(StFunctions->actions().at(i)->text());
    MebPanel->addWidget(theItem[i]);
}


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

Если только к этому подменю не приделать setData и при добавлении узнавать, что это такое, подменю или уже акшон. Задача решаема вообщем-то только может быть есть более простые решения.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.1.2010, 1:18
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(JuryS1806 @ 29.1.2010, 2:43) *
И это меню останется распахнутым до конца сенса. И уже в следующий раз не нужно будет лезть неизвестно куда. При проектировании это экономит уйму времени.
идея понятна (в том числе благодаря двум скринам). Мне кажется, что её реализация займёт больше времени, чем идея увиденная мною в SolidWorks (какой-то там версии).

Где-то на форуме я её уже описывал, но чтобы не искать вот скрины:
Нажата одна кнопка "элементы", на панели инструментов (самая левая). Отображается одноимённая панель инструментов:
Прикрепленное изображение

Нажата одна кнопка "эскиз", на панели инструментов (вторая слева). Отображается одноимённая панель инструментов:
Прикрепленное изображение

Нажата стрелка у кнопки "элементы" (самая левая). Отображается её контекстное меню, аналогичное её одноимённой панели инструментов:
Прикрепленное изображение

Нажата стрелка у кнопки "эскиз" (вторая слева). Отображается её контекстное меню, аналогичное её одноимённой панели инструментов:
Прикрепленное изображение


Кнопки тригерные, т.е. помнят своё состояние (кроме кнопочки раскрытия выпадающего меню, что логично)

Цитата(JuryS1806 @ 29.1.2010, 2:43) *
Думаю это больше похоже на QTreeView
полагаю, что это вообще не удачный способ. Уж лучше сделать на основе меню, возможно за счёт наследования. Суть изменений - заставить его не скрываться, когда с него фокус уходит. И поместить по нужным координатам, относительно родительского меню.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JuryS1806
  опции профиля:
сообщение 29.1.2010, 1:23
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


Да. Неплохие ресурсы зашиты в Solids. Только вот для проектирования места не остается. . И функции дерьмо. Вращение бобышки. Не додумались на ту же бобышку рассчитать центр массы и давай ее вращать через плечо и еще через кое-чтО !

Я все же хочу свой вариант реализовать. Он более рабочий, чем эта юзерфильная хрень с иконками. Может быть вы посодействуете ? Тот же TreeView может использовать ? Или же еще как нибудь возможно ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.1.2010, 1:24
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


моё второе сообщение прилетело раньше твоего, как следствие склеилось с моим предыдущим сообщением (т.е. читай выше)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JuryS1806
  опции профиля:
сообщение 29.1.2010, 1:27
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


Блин как сложно-то оказывается ! И как же заставить его не скрывать это меню ? Может быть отловить событие наведения курсора на пункт меню ? Только как это сделать пока не понятно !

Юра, я зачитал. то что было написано выше. Вот смотрю класс QMenu, QMenuBar, пока в замешательстве если честно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 17:21