Russian Qt Forum
Ноябрь 25, 2024, 06:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сделать перелистывание картинок в QLabel  (Прочитано 7699 раз)
Tin-moon
Гость
« : Август 02, 2010, 13:31 »

Нужно чтобы набор картинок перелистывался в QLabel, загоняю нужные в вектор а дольше как их еспользовать непойму...
Код:
QVector<QPixmap> Pict;
    Pict<<QPixmap(imgPath + "/Asmo_Assasin.png")
            <<QPixmap(imgPath + "/Elyos_Chanter.png")
            <<QPixmap(imgPath + "/Asmo_Cleric.png")
            <<QPixmap(imgPath + "/Elyos_Glad.png")
            <<QPixmap(imgPath + "/Asmo_Spirit.png")
            <<QPixmap(imgPath + "/Elyos_Ranger.png")
            <<QPixmap(imgPath + "/Asmo_Templar.png")
            <<QPixmap(imgPath + "/Elyos_Sorc.png");
Записан
SABROG
Гость
« Ответ #1 : Август 02, 2010, 13:42 »

перелистывался в QLabel

По какому действию, автоматически или по клику где-то?
Записан
kdm
Гость
« Ответ #2 : Август 02, 2010, 13:47 »

Вроде myLabel->setPixmap(Pict[index]); устанавливает пиксмап для лейбела. Чтобы они перелистывались через определенное время можно сделать таймер QTimer и по сигналу timeout можно отображать картинку myLabel->setPixmap(Pict[(index = (  (index+1) >= Pict.count() ? 0 : index+1   ))]); Может чего напутал в тернарном операторе, но так теоритически должно работать. А, еще можно заделать все картинки в гифку и использовать myLabel->setMovie(QMovie("path to movie));
Записан
SABROG
Гость
« Ответ #3 : Август 02, 2010, 13:57 »

можно сделать таймер QTimer

Лучше QTimeLine.
Записан
Tin-moon
Гость
« Ответ #4 : Август 02, 2010, 15:23 »

Да автоматически. Ща буду пробовать, ток чот не понял как загнать в муви? гивку подготовить заранее или QT преобразовывает?
Записан
SABROG
Гость
« Ответ #5 : Август 02, 2010, 15:34 »

Да автоматически. Ща буду пробовать, ток чот не понял как загнать в муви? гивку подготовить заранее или QT преобразовывает?
QMovie подходит только для загрузки файлов анимации известных форматов (gif, mng). Для пофреймовой анимации лучше использовать QTimeLine.
Записан
Tin-moon
Гость
« Ответ #6 : Август 02, 2010, 17:51 »

Чот у мя Муви ругается. Если можно небольшой пример с ТаймЛаин плз (1-2 картинки)
Записан
SABROG
Гость
« Ответ #7 : Август 02, 2010, 19:28 »

псевдокод

Код
C++ (Qt)
QTimeLine *timeLine = new QTimeLine(1000, this); // меняем картинку каждую секунду (1000 мс)
timeLine->setFrameRange(0, Pict.size()); // ставим количество фреймов равное количеству картинок в векторе
connect(timeLine, SIGNAL(frameChanged(int)), myObject/*или this*/, SLOT(mySlot(int)));
...
timeLine->start(); // запускаем timeline. Можно впихнуть в какой-нибудь слот на нажатие кнопки и т.п.
...
void myObject::mySlot(int frame)
{
   ui.label->setPixmap(Pict[frame]);
}
 
Записан
Tin-moon
Гость
« Ответ #8 : Август 02, 2010, 22:56 »

Большое те спасибо, ну и вообще всем кто отвечал, осталось перезапуск сделать
Записан
Tin-moon
Гость
« Ответ #9 : Август 03, 2010, 08:53 »

Сначала в вектор загнал 8 картинок(все отлично работает), передумал оставил 7 доходит до конца и падает.... оставил 2 тоже самое, что это может быть?

Что это значит?
Код:
ASSERT failure in QVector<T>::operator[]: "index out of range", file c:\DevTools\Qt\4.7.0-beta2\include/QtCore/../../src/corelib/tools/qvector.h, line 347
Invalid parameter passed to C runtime function.
« Последнее редактирование: Август 03, 2010, 09:10 от Tin-moon » Записан
SABROG
Гость
« Ответ #10 : Август 03, 2010, 09:13 »

Тут надо допилить:

Код
C++ (Qt)
timeLine->setFrameRange(0, Pict.size()-1);
Записан
Tin-moon
Гость
« Ответ #11 : Август 03, 2010, 09:21 »

Спс, результатом доволен), а еще можно вопросик, как сделать чтобы была информация когда наводишь на exe (ну там типо компания, версия ...)
Записан
SABROG
Гость
« Ответ #12 : Август 03, 2010, 10:44 »

Спс, результатом доволен), а еще можно вопросик, как сделать чтобы была информация когда наводишь на exe (ну там типо компания, версия ...)

Тут о том как добавить иконку к приложению, но помимо иконки в .rc файле можно прописать версию приложения
http://doc.qt.nokia.com/latest/appicon.html

Внизу как добавить информацию о версии:
http://msdn.microsoft.com/en-us/library/aa381058%28VS.85%29.aspx
Записан
Tin-moon
Гость
« Ответ #13 : Август 03, 2010, 13:58 »

Все прописал, компилится и ничего не появляется....

Все разобрался, спс тему можно закрыть.
« Последнее редактирование: Август 03, 2010, 14:14 от Tin-moon » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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