Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Tin-moon от Август 02, 2010, 13:31



Название: Как сделать перелистывание картинок в QLabel
Отправлено: 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");


Название: Re: Как сделать перелистывание картинок в QLabel
Отправлено: SABROG от Август 02, 2010, 13:42
перелистывался в QLabel

По какому действию, автоматически или по клику где-то?


Название: Re: Как сделать перелистывание картинок в QLabel
Отправлено: kdm от Август 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));


Название: Re: Как сделать перелистывание картинок в QLabel
Отправлено: SABROG от Август 02, 2010, 13:57
можно сделать таймер QTimer

Лучше QTimeLine.


Название: Re: Как сделать перелистывание картинок в QLabel
Отправлено: Tin-moon от Август 02, 2010, 15:23
Да автоматически. Ща буду пробовать, ток чот не понял как загнать в муви? гивку подготовить заранее или QT преобразовывает?


Название: Re: Как сделать перелистывание картинок в QLabel
Отправлено: SABROG от Август 02, 2010, 15:34
Да автоматически. Ща буду пробовать, ток чот не понял как загнать в муви? гивку подготовить заранее или QT преобразовывает?
QMovie подходит только для загрузки файлов анимации известных форматов (gif, mng). Для пофреймовой анимации лучше использовать QTimeLine.


Название: Re: Как сделать перелистывание картинок в QLabel
Отправлено: Tin-moon от Август 02, 2010, 17:51
Чот у мя Муви ругается. Если можно небольшой пример с ТаймЛаин плз (1-2 картинки)


Название: Re: Как сделать перелистывание картинок в QLabel
Отправлено: SABROG от Август 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]);
}
 


Название: Re: Как сделать перелистывание картинок в QLabel
Отправлено: Tin-moon от Август 02, 2010, 22:56
Большое те спасибо, ну и вообще всем кто отвечал, осталось перезапуск сделать


Название: Re: Как сделать перелистывание картинок в QLabel
Отправлено: Tin-moon от Август 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.


Название: Re: Как сделать перелистывание картинок в QLabel
Отправлено: SABROG от Август 03, 2010, 09:13
Тут надо допилить:

Код
C++ (Qt)
timeLine->setFrameRange(0, Pict.size()-1);


Название: Re: Как сделать перелистывание картинок в QLabel
Отправлено: Tin-moon от Август 03, 2010, 09:21
Спс, результатом доволен), а еще можно вопросик, как сделать чтобы была информация когда наводишь на exe (ну там типо компания, версия ...)


Название: Re: Как сделать перелистывание картинок в QLabel
Отправлено: SABROG от Август 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


Название: Re: Как сделать перелистывание картинок в QLabel
Отправлено: Tin-moon от Август 03, 2010, 13:58
Все прописал, компилится и ничего не появляется....

Все разобрался, спс тему можно закрыть.