Поиск:

Ответ в темуСоздание новой темы Создание опроса
> боковое меню, возможно ли? 
V
    Опции темы
uwannadie
Дата 23.5.2014, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: нет
Всего: 1



столкнулся с задачкой при создании кроссплатформенного приложения: необходимо реализовать менюшку, которая располагалась бы сбоку формы.
делать пытаюсь, используя Qt.
надо, чтобы получилось нечто такое:
user posted imageuser posted image
перерыл кучу всего на форумах троллей\сорсфордже\в сырсцах разных панелек для *nix десктопов, но нужного решения так и не нашел.

может кто подскажет, в какую сторону нужно копать, дабы реализовать задуманное?

п.с. qml+qt.quick не подходят из-за довольно кривых костылей по работе с mdi приложениями
--------------------
PM MAIL   Вверх
Amp
Дата 23.5.2014, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Так в чем проблема самому нарисовать это все? 
PM MAIL   Вверх
uwannadie
Дата 23.5.2014, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: нет
Всего: 1



да неохота просто лепить костыли из кучи кнопок и панелей, вот и подумал, может есть способ сделать это по-человечески
--------------------
PM MAIL   Вверх
Amp
Дата 23.5.2014, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Не лепи smile Пишешь свою отрисовку, обрабатываешь события от мыши. 

Можешь еще изучить исходники QMenu. Там когда установлен флаг tearOffEnabled, то оно эмбедится в отдельное окно. Возможно это прольет свет на то как QMenu использовать в качестве обычного виджета.
PM MAIL   Вверх
reider
Дата 23.5.2014, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 18.11.2013

Репутация: нет
Всего: нет



Можно попробовать обьявить QHBoxLayout, а затем поместить в него объекты QMenu.
Попробуйте.

Добавлено @ 19:29
Либоже использовать QToolBar, и выводить PopUp меню.
QToolBar вы без проблем расположите горизонтально.
Соедените с сигналом нажатия мыши и будете вызывать меню по соответствующим координатам.

Это сообщение отредактировал(а) reider - 23.5.2014, 19:31
PM MAIL   Вверх
reider
Дата 23.5.2014, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 18.11.2013

Репутация: нет
Всего: нет



Amp а зачем QMenu? Он же вроде как QMenuBar сварганить хочет
PM MAIL   Вверх
Amp
Дата 26.5.2014, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Цитата(reider @  23.5.2014,  19:37 Найти цитируемый пост)
Он же вроде как QMenuBar сварганить хочет 

Но QMenuBar же не умеет вертикальной ориентации. Поэтому я вижу два варианта - либо самому реализовывать его функционал, хотя бы частично, либо пытаться городить костыли вокруг QMenu. 

На мой взгляд подобное боковое меню является сомнительным интерфейсным решением. 
PM MAIL   Вверх
uwannadie
Дата 28.5.2014, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: нет
Всего: 1



на мой взгляд тоже, но поступило ЦУ сделать именно такое меню
--------------------
PM MAIL   Вверх
uwannadie
Дата 29.5.2014, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: нет
Всего: 1



в общем нарисовал менюшку немного через костыли, но вроде так, как надо:
Код

QToolBar* menuToolbar = new QToolBar();
menuToolbar->setOrientation(Qt::Vertical);

QToolButton* btnTest = new QToolButton();
btnTest->setText("Test menu");
btnTest->setPopupMode(QToolButton::InstantPopup);
btnTest->setFixedHeight(23);

QMenu* btnTestMenu = new QMenu("Menu1");
btnTestMenu->addMenu("Submenu 1");
btnTestMenu->addMenu("Submenu 2");    
btnTest->setMenu(btnTestMenu);
   
menuToolbar->addWidget(btnTest);    

ui->verticalLayout->addWidget(menuToolbar);

user posted imageuser posted image
ну а дальше, используя stylesheet-ы приведу ее к нужному виду

Это сообщение отредактировал(а) uwannadie - 29.5.2014, 14:58
--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0625 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.