crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Проблема с итератором, Перескакивает на последнее изображение
Xantrax
  опции профиля:
сообщение 14.10.2012, 20:15
Сообщение #1


Новичок


Группа: Неактивирован
Сообщений: 8
Регистрация: 14.10.2012
Пользователь №: 3561

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте, не судите строго, я новичек...
Идея: По нажатию кнопки в Qlabel отображаются различные картинки, которые есть в файле ресурсов...
Код:
.h
Раскрывающийся текст
#ifndef MY_H
#define MY_H

#include <QtGui/QWidget>

class QPushButton;
class QLabel;

class My : public QWidget
{
    Q_OBJECT
    
public:
    My(QWidget *parent = 0);
    ~My();

private:
    QPushButton *btn;
    QLabel *lbl;
public slots:
    void nagmi();
};

#endif // MY_H

.cpp
Раскрывающийся текст
#include "my.h"

#include <QApplication>
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
#include <QPixmap>
#include <QList>
#include <QListIterator>

My::My(QWidget *parent)
    : QWidget(parent)
{
    btn=new QPushButton("Enter");
    lbl=new QLabel ("This Label");

    QPixmap px(":/1.JPG");
    lbl->setPixmap(px.scaled(320,480, Qt::KeepAspectRatio));

    QVBoxLayout *lt=new QVBoxLayout(this);
    lt->addWidget(lbl);
    lt->addWidget(btn);

    setLayout(lt);

    connect(btn,SIGNAL(clicked()),this,SLOT(nagmi()));
}

My::~My()
{
    
}

void My::nagmi()
{
    QList<QString> list;
    list<<":/1.JPG"<<":/2.JPG"<<":/3.JPG"<<":/4.JPG";
    QListIterator<QString>that(list);
    while(that.hasNext())
    {
        QPixmap px(that.next());
        lbl->setPixmap(px.scaled(320,480, Qt::KeepAspectRatio));
    }
}

main.cpp
Раскрывающийся текст
#include <QtGui/QApplication>
#include "my.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    My w;
    w.setWindowFlags(Qt::Dialog|Qt::WindowStaysOnTopHint);
    w.show();
    
    return a.exec();
}

Есстественно есть еще файл ресурсов и .pro.
Проблема: По нажатию кнопки пропускаются 2-е и 3-е изображение и сразу показывается последнее... ((
Вопрос: В чем проблема, подскажите?
Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 15.10.2012, 16:49
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Думаю "проблема"в этом:
while(that.hasNext())
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 15.10.2012, 18:24
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Вы проходите весь список сразу. А нужно список файлов хранить в глобальной переменной и текущую позицию тоже.
А в слоте брать из списка изображение под нужной позицией и потом инкрементировать ее.

int pos = 0;

void My::nagmi()
{
QPixmap px(list.at(pos++));
lbl->setPixmap(px.scaled(320,480, Qt::KeepAspectRatio));
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Xantrax
  опции профиля:
сообщение 15.10.2012, 21:11
Сообщение #4


Новичок


Группа: Неактивирован
Сообщений: 8
Регистрация: 14.10.2012
Пользователь №: 3561

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо большое сообразил.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.12.2024, 10:53