Название: Движение виджетов Отправлено: ammaximus от Января 27, 2012, 08:31 Я делаю таблицу, в которой по результатам сортировки должны меняться местами столбцы. Чтобы было более очевидно, что содержимое столбца изменилось, я хочу менять их с анимацией наплывом. Решил реализовывать столбцы с помощью QPixmap. Помогите поменять местами два столбца вот на таком простом примере:
Код: Widget::Widget(QWidget *parent) Название: Re: Движение виджетов Отправлено: interv от Января 27, 2012, 09:40 Чегото я не понимаю, Вы наследуетесь от QWidget для тогочтобы сделать свой класс "Таблица"?
если нет, то зачем void Widget::paintEvent(QPaintEvent * e), надо переопределять класс QTableWidget или QTableView. а если да то флаг вам в руки, создавать свой TableWidget это все равно что создавать велосипед... Название: Re: Движение виджетов Отправлено: ammaximus от Января 27, 2012, 09:57 Боюсь что и при этом придется все полностью перерисовывать. Что то решение у меня как то смутно представляется
Название: Re: Движение виджетов Отправлено: interv от Января 27, 2012, 10:10 отнють, есть разные варианты, например использование делигатов (QItemDelegate) для отрисовки...
Название: Re: Движение виджетов Отправлено: ammaximus от Января 27, 2012, 11:33 оу, прошу прощения, Qt 3.3
Название: Re: Движение виджетов Отправлено: ammaximus от Января 27, 2012, 11:50 Вообщем я буду наследовать у QTableItem и делать свое отображение, у меня все равно нестандартный вид быть должен. Таким образом вопрос сохраняется, как плавно поменять местами два виджета, чтобы получилась анимация, т.е. один выходит на какое то место, а остальные двигаются.
Название: Re: Движение виджетов Отправлено: ammaximus от Января 27, 2012, 13:19 Как всегда, запутал народ деталями. Меня интересует как правильно сделать анимацию - перемещения группы виджетов по поверхности другого.
Название: Re: Движение виджетов Отправлено: lighting от Января 27, 2012, 13:32 QPropertyAnimation но поскольку у тебя Qt 3.3 то видимо делать ее придется вручную. Думаю move() + QTimer для этого должно быть достаточно.
Название: Re: Движение виджетов Отправлено: Bepec от Января 27, 2012, 17:26 Тебе придётся делать кучу жутких и совершенно "костыльных" действий.
Вариант с Move/QTimer не прокатит помоему, ибо компоновщики будут каждый раз перерасчитывать заново :) Можно отказаться от компоновщиков, но... это чревато. PS не вижу простых вариантов без костылей этого сделать. Засим откланиваюсь. Название: Re: Движение виджетов Отправлено: BuRn от Января 28, 2012, 12:33 QPropertyAnimation +QStateMashine уже не в моде нынче ?
Название: Re: Движение виджетов Отправлено: lighting от Января 29, 2012, 11:18 BuRn топикстартеру нужен Qt 3.3 так что мимо кассы.
Название: Re: Движение виджетов Отправлено: ammaximus от Февраля 02, 2012, 13:36 Компоновщики действительно мешают. Плакала моя анимация.
Название: Re: Движение виджетов Отправлено: Bepec от Февраля 02, 2012, 22:19 Есть интересная мысль. Если виджеты одной формы, то можно накладывать поверх них гифку и проигрывать. Будет так желанная вами анимация, а виджеты просто меняете местами в компоновщике.
PS конечн сумасшедшая, но идея !!! :D Название: Re: Движение виджетов Отправлено: andrew.k от Февраля 02, 2012, 23:20 А давно ли QTableItem стал виджетом? Как ты его двигать собираешься?
Не мучай попу, бери qt4. Делай сцену и будет тебе счастье) Как вариант. Грабить строчку - получаешь пиксмап, которую ты собираешься двигать. Пихаешь его в виджет, QLabel видимо, показываешь его поверх своей строки (реальной строки в таблице). Удаляешь строчку из таблицы. Двигаешь виджет с картинкой куда тебе надо. Вставляешь строку. Скрываешь виджет. Но это трындец. Проще просто выделить перемещенный элемент и поставить на него фокус (прокрутить таблицу, чтобы стал виден) Если пользователь не даун, он вкурит. |