Название: правильное чтение .gif файлов...и их обновление. Отправлено: zoro86 от Октябрь 21, 2010, 08:54 Всем привет...
В программе использую анимированые кнопки, для этого делаю так... Код: QMovie *animGif = new QMovie(QString("images/anim.gif")); Все работает нормально... Проблема в том что когда программа запущена я не могу обновить .gif файлы... при удаление пишит что они используются другой программой... Есть ли возможность считывать файл иначе.... то есть предварительно его куда то скопировать а потом читать или как нибудь еще??? Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: GreatSnake от Октябрь 21, 2010, 09:04 Загрузи файл в QBuffer и уже его скорми в
QMovie( QIODevice * device, const QByteArray & format = QByteArray(), QObject * parent = 0 ) Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: zoro86 от Октябрь 21, 2010, 09:23 Так понятно... а как это реализовать....
например.. Код: QByteArray bytes; Как в буфер записать картинку? Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: merke от Октябрь 21, 2010, 09:40 Код: QImage image("test.gif"); Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: zoro86 от Октябрь 21, 2010, 09:56 Делаю так
Код: //Добавляем в буфер дает ошибку modules\classes\mainwindow.cpp:3583: error: cannot convert 'QBuffer' to 'QIODevice*' in initialization ??? Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: GreatSnake от Октябрь 21, 2010, 10:00 Ну дык ёлы-палы...
Зачем делаете присваивание "QIODevice *dev1 = buffer;"? Отдавайте buffer на вход QMovie. Хм, извиняюсь, но какой-то вы странный "самовар", коли делаете такие детские ошибки - пытаетесь получить указатель без '&'. Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: zoro86 от Октябрь 21, 2010, 10:04 пробовал говорит..
Код: error: no matching function for call to 'QMovie::QMovie(QBuffer&)' Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: GreatSnake от Октябрь 21, 2010, 10:07 мде...
QMovie *animGif = new QMovie(&buffer); Надо бы освоить азы сначала. Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: zoro86 от Октябрь 21, 2010, 11:24 За наставления спасибо.... :-\ буду по внимательней..
делаю так... Код: QImage image; и так... Код: QImage image; Картинки нету... что делаю не так.. Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: GreatSnake от Октябрь 21, 2010, 11:32 Цитировать Картинки нету... что делаю не так.. QBuffer создали на стэке... Азы однако...Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: zoro86 от Октябрь 21, 2010, 11:46 Я только начал QBuffer юзать, так что поясните смысл для не просвященных
Цитировать QBuffer создали на стэке... Азы однако... Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: GreatSnake от Октябрь 21, 2010, 11:50 При выходе из текущего скопа объект QBuffer будет уничтожен.
Это не Qt - это С++! Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: merke от Октябрь 21, 2010, 13:22 Т.е. русским языком: создавай буфер глобально. Получается при выходе из данноЙ функции буфер исчезает. Объяви в заголовочном файле как
Код: QBuffer *bufer; Код: bufer = new QBuffer; А уже в своей функцие делай следую Код: buffer.open(QBuffer::ReadWrite); Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: zoro86 от Октябрь 21, 2010, 13:58 Объявляю
Код:
далее в контролере делаю .. Код: buffer = new QBuffer; Код: QImage image; при компиляции говорит.. Код: [color=red] Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: GreatSnake от Октябрь 21, 2010, 14:03 Ну дык коли перешел на указатель, то убирай '&' перед buffer.
А ещё лучше - отложи возню с Qt пока не освоишь азы C++. Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: zoro86 от Октябрь 21, 2010, 14:04 Да точно... но картинки нет... ???
Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: zoro86 от Октябрь 22, 2010, 05:50 Убрал знак &...
программа компилируется... Но при запуске опять таки картинка не отображается Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: zoro86 от Октябрь 22, 2010, 12:28 Вытаскиваю qDebug() << buffer->size();
дает 9634 а размер файла 134023 ??? что не так... Название: Re: правильное чтение .gif файлов...и их обновление. Отправлено: zoro86 от Октябрь 22, 2010, 12:46 Вот на это
Код: qDebug() << animGif->isValid(); выводит Код: false если это что та даст.. |