Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Анимация в QTextEdit
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
kibsoft
Нужно вставить gif файл в QTextEdit, чтобы воспроизводилась анимация, insertImage и явная вставка HTML не помогает - вставляется статическая картинка. Можно ли как нибудь тогда в QTextEdit вставить в нужных местах QLabel с установленным QMovie? Если да, то как это сделать?
kibsoft
Погуглил, понигмил, поассистентил, в итоге планирую перебраться на 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
Может быть кто-то не понял к чему в предыдущем посте я писал про 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();
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.