crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> перетаскивание группы виджетов
borune
  опции профиля:
сообщение 2.9.2014, 17:33
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 152
Регистрация: 1.1.2011
Пользователь №: 2314

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




Репутация:   0  


приветствую, камрады.

Таск следующий - главное окно содержит компоновщики виджетов, которые группируют виждеты в неком порядке (пускай будет вертикальном). Т.е. есть несколько групп виджетов, которые (группы) располагаются друг под другом. Задача состоит в том, чтоб дать возможность пользователю менять местами группы. Виждеты внутри группы перемещаться при этом друг относительно друга не должны.

Как это реализовать?

Первой идеей было использовать QDockWidget, но при перетаскивании они не меняются местами, а добавляются рядом, образуя вкладки. Делать драг-дроп с расчетом координат всех виджетов как-то совсем не хочется. Как лучше сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FireBlack
  опции профиля:
сообщение 2.9.2014, 17:57
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 38
Регистрация: 17.10.2010
Из: г.Пенза
Пользователь №: 2121

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




Репутация:   1  


Цитата(borune @ 2.9.2014, 18:33) *
Задача состоит в том, чтоб дать возможность пользователю менять местами группы.

Если делать как проще, то QBoxLayout (и все его наследники) позволяют исключить требуемый виджет из компоновки и заново добавить в нужное место. А пользователю предоставить две кнопочки "поднять виджет" и "опустить виджет".
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
borune
  опции профиля:
сообщение 2.9.2014, 18:23
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 152
Регистрация: 1.1.2011
Пользователь №: 2314

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




Репутация:   0  


FireBlack, спасибо, этот вариант как крайний, так как не очень хочется создавать еще кнопки (там и так места мало), причем предложенный вариант не совсем оптимален с точки зрения удобства пользователя. Если в списке будет не две-три группы, а чуть больше, то представьте, сколько перестановок придется сделать пользователю, чтоб переместить виджет в нужное место (например, если групп 10, и надо перенести 1ую группу на 10ое место - нужно 9 раз нажать кнопку "опустить виджет", согласитесь, не самое оптимальное решение). Хотелось бы все-таки использовать мышь для решения задачи.

Сообщение отредактировал borune - 2.9.2014, 18:23
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FireBlack
  опции профиля:
сообщение 2.9.2014, 22:41
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 38
Регистрация: 17.10.2010
Из: г.Пенза
Пользователь №: 2121

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




Репутация:   1  


Цитата(borune @ 2.9.2014, 19:23) *
Хотелось бы все-таки использовать мышь для решения задачи.

Вот, за вечер набросал примерчик. Реализовал как Drag&Drop, так и кнопочки.
К сожалению, не могу сказать что получилось просто, быстро и понятно - однако вполне работоспособно :). А вот теперь вопрос к знатокам: правильный ли у меня подход или же нет и все можно сделать проще?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.9.2014, 11:39
Сообщение #5


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

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

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




Репутация:   94  


Цитата(borune @ 2.9.2014, 20:33) *
Первой идеей было использовать QDockWidget, но при перетаскивании они не меняются местами, а добавляются рядом, образуя вкладки.
меняются, поведение зависит от настроек.
Запустите "Example and Demos" выберите пункт "Demonstrations" -> "Mainwindow"
потаскайте DockWidget-ы

Прикрепленное изображение
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
borune
  опции профиля:
сообщение 9.9.2014, 22:08
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 152
Регистрация: 1.1.2011
Пользователь №: 2314

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 3.9.2014, 12:39) *
Цитата(borune @ 2.9.2014, 20:33) *
Первой идеей было использовать QDockWidget, но при перетаскивании они не меняются местами, а добавляются рядом, образуя вкладки.
меняются, поведение зависит от настроек.
Запустите "Example and Demos" выберите пункт "Demonstrations" -> "Mainwindow"
потаскайте DockWidget-ы

Прикрепленное изображение


ага, с этим понятно. еще нубский вопрос - как растянуть полученные доквиджеты на весь экран?

upd использовать лейаут) сам себе ответил.
uupd в этом случае доквиджеты двигать нельзя..

Сообщение отредактировал borune - 9.9.2014, 22:17
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 24.10.2019, 8:04