![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
borune |
![]()
Сообщение
#1
|
Участник ![]() ![]() Группа: Участник Сообщений: 152 Регистрация: 1.1.2011 Пользователь №: 2314 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
приветствую, камрады.
Таск следующий - главное окно содержит компоновщики виджетов, которые группируют виждеты в неком порядке (пускай будет вертикальном). Т.е. есть несколько групп виджетов, которые (группы) располагаются друг под другом. Задача состоит в том, чтоб дать возможность пользователю менять местами группы. Виждеты внутри группы перемещаться при этом друг относительно друга не должны. Как это реализовать? Первой идеей было использовать QDockWidget, но при перетаскивании они не меняются местами, а добавляются рядом, образуя вкладки. Делать драг-дроп с расчетом координат всех виджетов как-то совсем не хочется. Как лучше сделать? |
|
|
FireBlack |
![]()
Сообщение
#2
|
![]() Студент ![]() Группа: Участник Сообщений: 38 Регистрация: 17.10.2010 Из: г.Пенза Пользователь №: 2121 Спасибо сказали: 13 раз(а) Репутация: ![]() ![]() ![]() |
Задача состоит в том, чтоб дать возможность пользователю менять местами группы. Если делать как проще, то QBoxLayout (и все его наследники) позволяют исключить требуемый виджет из компоновки и заново добавить в нужное место. А пользователю предоставить две кнопочки "поднять виджет" и "опустить виджет". |
|
|
borune |
![]()
Сообщение
#3
|
Участник ![]() ![]() Группа: Участник Сообщений: 152 Регистрация: 1.1.2011 Пользователь №: 2314 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
FireBlack, спасибо, этот вариант как крайний, так как не очень хочется создавать еще кнопки (там и так места мало), причем предложенный вариант не совсем оптимален с точки зрения удобства пользователя. Если в списке будет не две-три группы, а чуть больше, то представьте, сколько перестановок придется сделать пользователю, чтоб переместить виджет в нужное место (например, если групп 10, и надо перенести 1ую группу на 10ое место - нужно 9 раз нажать кнопку "опустить виджет", согласитесь, не самое оптимальное решение). Хотелось бы все-таки использовать мышь для решения задачи.
Сообщение отредактировал borune - 2.9.2014, 18:23 |
|
|
FireBlack |
![]()
Сообщение
#4
|
![]() Студент ![]() Группа: Участник Сообщений: 38 Регистрация: 17.10.2010 Из: г.Пенза Пользователь №: 2121 Спасибо сказали: 13 раз(а) Репутация: ![]() ![]() ![]() |
Хотелось бы все-таки использовать мышь для решения задачи. Вот, за вечер набросал примерчик. Реализовал как Drag&Drop, так и кнопочки. К сожалению, не могу сказать что получилось просто, быстро и понятно - однако вполне работоспособно :). А вот теперь вопрос к знатокам: правильный ли у меня подход или же нет и все можно сделать проще? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#5
|
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Первой идеей было использовать QDockWidget, но при перетаскивании они не меняются местами, а добавляются рядом, образуя вкладки. меняются, поведение зависит от настроек.Запустите "Example and Demos" выберите пункт "Demonstrations" -> "Mainwindow" потаскайте DockWidget-ы |
|
|
||
borune |
![]()
Сообщение
#6
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 152 Регистрация: 1.1.2011 Пользователь №: 2314 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Первой идеей было использовать QDockWidget, но при перетаскивании они не меняются местами, а добавляются рядом, образуя вкладки. меняются, поведение зависит от настроек.Запустите "Example and Demos" выберите пункт "Demonstrations" -> "Mainwindow" потаскайте DockWidget-ы ага, с этим понятно. еще нубский вопрос - как растянуть полученные доквиджеты на весь экран? upd использовать лейаут) сам себе ответил. uupd в этом случае доквиджеты двигать нельзя.. Сообщение отредактировал borune - 9.9.2014, 22:17 |
|
|
||
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 1.4.2025, 11:08 |