crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Анимация в QTextEdit
kibsoft
  опции профиля:
сообщение 19.3.2010, 19:03
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

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




Репутация:   2  


Нужно вставить gif файл в QTextEdit, чтобы воспроизводилась анимация, insertImage и явная вставка HTML не помогает - вставляется статическая картинка. Можно ли как нибудь тогда в QTextEdit вставить в нужных местах QLabel с установленным QMovie? Если да, то как это сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 19.3.2010, 21:23
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

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




Репутация:   2  


Погуглил, понигмил, поассистентил, в итоге планирую перебраться на WebKit..

Да, а сделал вывод вот почему:
Цитата
170585 - QTextBrowser gif animation
Description
Add support for animated gifs and mngs in QTextEdit.

Won't fix:
We will not add this feature to QTextBrowser, as we don't aim for HTML compliance. Our new WebKit based HTML rendering component we are working on for Qt 4.4 will solve this a lot better.

В Qt баг трекере
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 21.3.2010, 13:29
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

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




Репутация:   2  


Может быть кто-то не понял к чему в предыдущем посте я писал про QTextBrowser - просто в приложении он у меня тоже есть. А вот что я накопал в кэше гугла на qtcentre(странно, но на в qtcenter wiki страница не находится, а в кэше гугла сохранилась. Слава ГУГЛУ!), привожу код:
// main.cpp
#include <QtGui>

class AnimatedTextEdit : public QTextEdit
{
    Q_OBJECT

public:
    AnimatedTextEdit(QWidget* parent = 0)
        : QTextEdit(parent) { }

    void addAnimation(const QUrl& url, const QString& fileName)
    {
        QMovie* movie = new QMovie(this);
        movie->setFileName(fileName);
        urls.insert(movie, url);
        connect(movie, SIGNAL(frameChanged(int)), this, SLOT(animate()));
        movie->start();
    }

private slots:
    void animate()
    {
        if (QMovie* movie = qobject_cast<QMovie*>(sender()))
        {
            document()->addResource(QTextDocument::ImageResource,
                urls.value(movie), movie->currentPixmap());
            setLineWrapColumnOrWidth(lineWrapColumnOrWidth()); // causes reload
        }
    }

private:
    QHash<QMovie*, QUrl> urls;
};

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);
    AnimatedTextEdit textEdit;
    textEdit.setHtml("<img src='bart-url'/><img src='homer-url'/>");
    textEdit.addAnimation(QUrl("bart-url"), "bart.gif");
    textEdit.addAnimation(QUrl("homer-url"), "homer.gif");
    textEdit.show();
    return app.exec();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 18.1.2020, 21:29