Russian Qt Forum
Февраль 23, 2012, 03:14
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
(Модератор:
Sergeich
) >
Движение виджетов
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Движение виджетов (Прочитано 404 раз)
ammaximus
Новичок
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
Сообщений: 30
Re: Движение виджетов
«
Ответ #1 :
Январь 27, 2012, 09:40 »
Чегото я не понимаю, Вы наследуетесь от QWidget для тогочтобы сделать свой класс "Таблица"?
если нет, то зачем void Widget::paintEvent(QPaintEvent * e), надо переопределять класс QTableWidget или QTableView.
а если да то флаг вам в руки, создавать свой TableWidget это все равно что создавать велосипед...
Записан
ammaximus
Новичок
Offline
Сообщений: 28
Re: Движение виджетов
«
Ответ #2 :
Январь 27, 2012, 09:57 »
Боюсь что и при этом придется все полностью перерисовывать. Что то решение у меня как то смутно представляется
Записан
interv
Новичок
Offline
Сообщений: 30
Re: Движение виджетов
«
Ответ #3 :
Январь 27, 2012, 10:10 »
отнють, есть разные варианты, например использование делигатов (QItemDelegate) для отрисовки...
Записан
ammaximus
Новичок
Offline
Сообщений: 28
Re: Движение виджетов
«
Ответ #4 :
Январь 27, 2012, 11:33 »
оу, прошу прощения, Qt 3.3
Записан
ammaximus
Новичок
Offline
Сообщений: 28
Re: Движение виджетов
«
Ответ #5 :
Январь 27, 2012, 11:50 »
Вообщем я буду наследовать у QTableItem и делать свое отображение, у меня все равно нестандартный вид быть должен. Таким образом вопрос сохраняется, как плавно поменять местами два виджета, чтобы получилась анимация, т.е. один выходит на какое то место, а остальные двигаются.
Записан
ammaximus
Новичок
Offline
Сообщений: 28
Re: Движение виджетов
«
Ответ #6 :
Январь 27, 2012, 13:19 »
Как всегда, запутал народ деталями. Меня интересует как правильно сделать анимацию - перемещения группы виджетов по поверхности другого.
Записан
lighting
Чайник
Offline
Сообщений: 90
Re: Движение виджетов
«
Ответ #7 :
Январь 27, 2012, 13:32 »
QPropertyAnimation но поскольку у тебя Qt 3.3 то видимо делать ее придется вручную. Думаю move() + QTimer для этого должно быть достаточно.
Записан
Bepec
Программист
Offline
Сообщений: 583
Re: Движение виджетов
«
Ответ #8 :
Январь 27, 2012, 17:26 »
Тебе придётся делать кучу жутких и совершенно "костыльных" действий.
Вариант с Move/QTimer не прокатит помоему, ибо компоновщики будут каждый раз перерасчитывать заново
Можно отказаться от компоновщиков, но... это чревато.
PS не вижу простых вариантов без костылей этого сделать. Засим откланиваюсь.
Записан
"Мастер простых решений" © andrew.k
BuRn
Частый гость
Offline
Сообщений: 202
Re: Движение виджетов
«
Ответ #9 :
Январь 28, 2012, 12:33 »
QPropertyAnimation +QStateMashine уже не в моде нынче ?
Записан
lighting
Чайник
Offline
Сообщений: 90
Re: Движение виджетов
«
Ответ #10 :
Январь 29, 2012, 11:18 »
BuRn
топикстартеру нужен Qt 3.3 так что мимо кассы.
Записан
ammaximus
Новичок
Offline
Сообщений: 28
Re: Движение виджетов
«
Ответ #11 :
Февраль 02, 2012, 13:36 »
Компоновщики действительно мешают. Плакала моя анимация.
Записан
Bepec
Программист
Offline
Сообщений: 583
Re: Движение виджетов
«
Ответ #12 :
Февраль 02, 2012, 22:19 »
Есть интересная мысль. Если виджеты одной формы, то можно накладывать поверх них гифку и проигрывать. Будет так желанная вами анимация, а виджеты просто меняете местами в компоновщике.
PS конечн сумасшедшая, но идея !!!
Записан
"Мастер простых решений" © andrew.k
andrew.k
phpBB Супер
Offline
Сообщений: 1113
*ерес - местный сумасшедший
Re: Движение виджетов
«
Ответ #13 :
Февраль 02, 2012, 23:20 »
А давно ли QTableItem стал виджетом? Как ты его двигать собираешься?
Не мучай попу, бери qt4. Делай сцену и будет тебе счастье)
Как вариант. Грабить строчку - получаешь пиксмап, которую ты собираешься двигать.
Пихаешь его в виджет, QLabel видимо, показываешь его поверх своей строки (реальной строки в таблице).
Удаляешь строчку из таблицы. Двигаешь виджет с картинкой куда тебе надо.
Вставляешь строку. Скрываешь виджет.
Но это трындец. Проще просто выделить перемещенный элемент и поставить на него фокус (прокрутить таблицу, чтобы стал виден)
Если пользователь не даун, он вкурит.
«
Последнее редактирование: Февраль 02, 2012, 23:23 от andrew.k
»
Записан
"Вообще он что должен делать мне неясно и вотому что можно сделать тоже не могу." (С) Верес
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> Печать
=> Интернационализация, локализация
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
=> Архив
===> Программирование
=====> Python
===> Веб программирование
=====> PHP, PERL, CGI
Загружается...