Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Goshman от Март 06, 2012, 17:42



Название: Отображение html-текста с рисунками в QTextEdit
Отправлено: Goshman от Март 06, 2012, 17:42
Добрый день!

Нужно отобразить html-текст с рисунками в Qt приложении. Тескт сохранен из формата MSWord как web-страница.
Набросал тестовое приложение.

textEditTest.pro:
Код:
QT       += core gui

TARGET = textEditTest
TEMPLATE = app


SOURCES += main.cpp\
        widget.cpp

HEADERS  += widget.h

main.cpp:
Код:
#include <QtGui/QApplication>
#include "widget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

widget.cpp:
Код:
#include "widget.h"
#include <QPushButton>
#include <QFileDialog>
#include <QTextStream>
#include <QTextEdit>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    resize(640, 480);

    QTextEdit *te = new QTextEdit(this);
    te->setGeometry(10, 10, 620, 400);
    connect(this, SIGNAL(setHtml(QString)), te, SLOT(setHtml(QString)));

    QPushButton *btn = new QPushButton("Load HTML text", this);
    btn->setGeometry(10, 420, 100, 50);
    connect(btn, SIGNAL(clicked()), this, SLOT(clicked()));
}

void Widget::clicked()
{
    QString FileName = QFileDialog::getOpenFileName(this);
    if (FileName.isEmpty()) return;
    QFile f(FileName);
    if (!f.open(QIODevice::ReadOnly)) return;

    QTextStream ts(&f);
    QString s = ts.readAll();
    f.close();

    emit setHtml(s);
}

widget.h:
Код:
#ifndef WIDGET_H
#define WIDGET_H

#include <QtGui/QWidget>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();

signals:
    void setHtml(const QString &text);

private slots:
    void clicked();
};

#endif // WIDGET_H

При загрузке файла текст отображается нормально, а вот вместо рисунков - серые размытые квадратики.
Что я делаю не так?


Название: Re: Отображение html-текста с рисунками в QTextEdit
Отправлено: k0p4 от Март 06, 2012, 17:58
Скорее всего картинка не подгрузилась. Проверь в дебаге стринг с ХТМЛем. И попробуй отобразить ХТМЛ в браузере.


Название: Re: Отображение html-текста с рисунками в QTextEdit
Отправлено: Goshman от Март 06, 2012, 18:18
Скорее всего картинка не подгрузилась. Проверь в дебаге стринг с ХТМЛем. И попробуй отобразить ХТМЛ в браузере.
В примере WebKil/HTML Previewer все корректно...


Название: Re: Отображение html-текста с рисунками в QTextEdit
Отправлено: Bepec от Март 06, 2012, 22:32
НЕДОСТОВЕРНАЯ ИНФОРМАЦИЯ:
Я нечётко помню, где то там спряталось свойство, разрешающее ссылки.

Точнее их отображение. Если его не включить, везде будут отображаться пустые листочки заместо рисунков.

Но к большому сожалению я не могу его вспомнить, а так же помогло это в той давней программе, или нет.


Название: Re: Отображение html-текста с рисунками в QTextEdit
Отправлено: GreatSnake от Март 07, 2012, 07:50
Что я делаю не так?
Перегрузи
Код
C++ (Qt)
QVariant QTextEdit::loadResource ( int type, const QUrl & name ) [virtual]

2 Bepec:
не понимаю смысл твоих ответов, в которых ответов-то по-сути и нет.


Название: Re: Отображение html-текста с рисунками в QTextEdit
Отправлено: Bepec от Март 07, 2012, 08:04
1) АП темы. И не спорь, тут более 30% тем забыты, из-за того что никто ничего не написал.
2) Даю пусть и недостоверную, но информацию. Как помню.
3) Пытаюсь помочь.

Плохие у меня мотивации или хорошие?


Название: Re: Отображение html-текста с рисунками в QTextEdit
Отправлено: Goshman от Март 08, 2012, 10:17
Перегрузи
Код
C++ (Qt)
QVariant QTextEdit::loadResource ( int type, const QUrl & name ) [virtual]
Я не совсем понимаю (вернее - сосем не понимаю), что писать внутри этой функции.

Да и изначальная проблема скорее всего с Qt не связана. Пол линуксом этот код работает. Скорее всего косяк системы. Она сильно забита всяким хламом. Одних Qt, собраных под MinGW и под MSVS, штук 5...