Russian Qt Forum
Февраль 23, 2012, 03:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Движение виджетов  (Прочитано 404 раз)
ammaximus
Новичок

Offline Offline

Сообщений: 28


« : Январь 27, 2012, 08:31 »

Я делаю таблицу, в которой по результатам сортировки должны меняться местами столбцы. Чтобы было более очевидно, что содержимое столбца изменилось, я хочу менять их с анимацией наплывом. Решил реализовывать столбцы с помощью QPixmap. Помогите поменять местами два столбца вот на таком простом примере:
Код:
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    a = new QPixmap(50,150);
    b = new QPixmap(50,150);
    a->fill(QColor(Qt::red));
    b->fill(QColor(Qt::green));
}

void Widget::paintEvent(QPaintEvent * e){
    QPainter *p = new QPainter(this);

    p->drawPixmap(0,0,*a);
    p->drawPixmap(50,0,*b);
}
Записан
interv
Новичок

Offline Offline

Сообщений: 30


« Ответ #1 : Январь 27, 2012, 09:40 »

Чегото я не понимаю, Вы наследуетесь от QWidget для тогочтобы сделать свой класс "Таблица"?
если нет, то зачем void Widget::paintEvent(QPaintEvent * e), надо переопределять класс QTableWidget или QTableView.
а если да то флаг вам в руки, создавать свой TableWidget это все равно что создавать велосипед...
Записан
ammaximus
Новичок

Offline Offline

Сообщений: 28


« Ответ #2 : Январь 27, 2012, 09:57 »

Боюсь что и при этом придется все полностью перерисовывать. Что то решение у меня как то смутно представляется
Записан
interv
Новичок

Offline Offline

Сообщений: 30


« Ответ #3 : Январь 27, 2012, 10:10 »

отнють, есть разные варианты, например использование делигатов (QItemDelegate) для отрисовки...
Записан
ammaximus
Новичок

Offline Offline

Сообщений: 28


« Ответ #4 : Январь 27, 2012, 11:33 »

оу, прошу прощения, Qt 3.3
Записан
ammaximus
Новичок

Offline Offline

Сообщений: 28


« Ответ #5 : Январь 27, 2012, 11:50 »

Вообщем я буду наследовать у QTableItem и делать свое отображение, у меня все равно нестандартный вид быть должен. Таким образом вопрос сохраняется, как плавно поменять местами два виджета, чтобы получилась анимация, т.е. один выходит на какое то место, а остальные двигаются.
Записан
ammaximus
Новичок

Offline Offline

Сообщений: 28


« Ответ #6 : Январь 27, 2012, 13:19 »

Как всегда, запутал народ деталями. Меня интересует как правильно сделать анимацию - перемещения группы виджетов по поверхности другого.
Записан
lighting
Чайник
*
Offline Offline

Сообщений: 90


« Ответ #7 : Январь 27, 2012, 13:32 »

QPropertyAnimation но поскольку у тебя Qt 3.3 то видимо делать ее придется вручную. Думаю move() + QTimer для этого должно быть достаточно.
Записан
Bepec
Программист
*****
Offline Offline

Сообщений: 583



« Ответ #8 : Январь 27, 2012, 17:26 »

Тебе придётся делать кучу жутких и совершенно "костыльных" действий.

Вариант с Move/QTimer не прокатит помоему, ибо компоновщики будут каждый раз перерасчитывать заново Улыбающийся

Можно отказаться от компоновщиков, но... это чревато.

PS не вижу простых вариантов без костылей этого сделать. Засим откланиваюсь.
Записан

"Мастер простых решений" © andrew.k
BuRn
Частый гость
***
Offline Offline

Сообщений: 202


« Ответ #9 : Январь 28, 2012, 12:33 »

QPropertyAnimation +QStateMashine уже не в моде нынче ?
Записан
lighting
Чайник
*
Offline Offline

Сообщений: 90


« Ответ #10 : Январь 29, 2012, 11:18 »

BuRn топикстартеру нужен Qt 3.3 так что мимо кассы.
Записан
ammaximus
Новичок

Offline Offline

Сообщений: 28


« Ответ #11 : Февраль 02, 2012, 13:36 »

Компоновщики действительно мешают. Плакала моя анимация.
Записан
Bepec
Программист
*****
Offline Offline

Сообщений: 583



« Ответ #12 : Февраль 02, 2012, 22:19 »

Есть интересная мысль. Если виджеты одной формы, то можно накладывать поверх них гифку и проигрывать. Будет так желанная вами анимация, а виджеты просто меняете местами в компоновщике.

PS конечн сумасшедшая, но идея !!! Веселый
Записан

"Мастер простых решений" © andrew.k
andrew.k
phpBB Супер
******
Offline Offline

Сообщений: 1113


*ерес - местный сумасшедший


« Ответ #13 : Февраль 02, 2012, 23:20 »

А давно ли QTableItem стал виджетом? Как ты его двигать собираешься?

Не мучай попу, бери qt4. Делай сцену и будет тебе счастье)

Как вариант. Грабить строчку - получаешь пиксмап, которую ты собираешься двигать.
Пихаешь его в виджет, QLabel видимо, показываешь его поверх своей строки (реальной строки в таблице).
Удаляешь строчку из таблицы. Двигаешь виджет с картинкой куда тебе надо.
Вставляешь строку. Скрываешь виджет.
Но это трындец. Проще просто выделить перемещенный элемент и поставить на него фокус (прокрутить таблицу, чтобы стал виден)
Если пользователь не даун, он вкурит.
« Последнее редактирование: Февраль 02, 2012, 23:23 от andrew.k » Записан

"Вообще он что должен делать мне неясно и вотому что можно сделать тоже не могу." (С) Верес
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Страница сгенерирована за 0.045 секунд. Запросов: 22.