Название: Как лучше всего проеобразовать HTML текст в обычный Отправлено: Hort от Июль 08, 2008, 17:44 Есть у меня база данных с полями QString (в них HTML текст). Собираюсь просматривать содержимое базы в QTreeView, но только надо чтобы текст отображался в нем без тегов, т.е. как обычный текст (типа для быстрой навигации, а при нажатии - в соседнем окне можно было бы расширенно редактировать HTML в QTextEdit). Так вот возникает вопрос каким способом преобразовать HTML данные в обычный текст.
- Создать буфер QTextDocument* в классе, в методе QVariant data() в него записывать строку через setHtml() и читать через toPlainText(), получившийся текст возвращать в QTreeView. Вороде както сильно громоздко и наверно ресурсоемко. - Или может сразу создавать два поля QString в базе данных, в одно записывать HTML текст, а в другое обычный для QTreeView (сохраняться они будут сразу из QTextEdit при редактировании через toPlainText() и toHtml()) - Или может сразу при открытии базы создавать второе поле для простого текста через тотже самый QTextDocument*, чтобы не хранить в базе лишние данный. Может ктонибуть знает менее ресурсоемкий способ и более экономичный. Напрмиер может фукцию какуюто, которая сразу на лету преобразует QString с HTML в QString с обычным текстом? Название: Re: Как лучше всего проеобразовать HTML текст в обычный Отправлено: pastor от Июль 08, 2008, 18:07 Как вариант написать делегат.
см. QAbstractItemView::setItemDelegate, а также examples Название: Re: Как лучше всего проеобразовать HTML текст в обычный Отправлено: Hort от Июль 08, 2008, 18:20 Как вариант написать делегат. надо несовсем это. данные в QTreeView будут представляться только в формате обычного текста. HTML нужен будет только при редактировании. и все равно както надо ж будет его преобразовывать в обычный. можно былоб попытаться отрисовывать HTML с помощью делегата, но для компактности лучше если там будет обычный текстсм. QAbstractItemView::setItemDelegate, а также examples Название: Re: Как лучше всего проеобразовать HTML текст в обычный Отправлено: ритт от Июль 08, 2008, 20:05 а как насчёт удаления регэкспом кусков текста между < и > (включительно) и замены <br> на \n ? - получится самый настоящий текст :)
Название: Re: Как лучше всего проеобразовать HTML текст в обычный Отправлено: Hort от Июль 08, 2008, 20:29 а как насчёт удаления регэкспом кусков текста между < и > (включительно) и замены <br> на \n ? - получится самый настоящий текст :) а можно поподробнее? ато у меня много чево еще не на слуху, и что такое регэксп я честно говоря не знаю ;DНазвание: Re: Как лучше всего проеобразовать HTML текст в обычный Отправлено: Пантер от Июль 09, 2008, 09:58 QRegExp в ассистенте почитай, там все легко и просто, если приложить немного усилий.
Название: Re: Как лучше всего проеобразовать HTML текст в обычный Отправлено: IGHOR от Июль 10, 2008, 01:58 QTextEdit text;
text.setHtml("<br>asdfasdf<b>asdfasdf</b><br>"); QMessageBox::warning(this,"Asdf",text.toPlainText()); Название: Re: Как лучше всего проеобразовать HTML текст в обычный Отправлено: Hort от Июль 10, 2008, 02:21 QTextEdit text; все это надо делать в фоновом режиме. поэтому QTextEdit не очень подходит.text.setHtml("<br>asdfasdf<b>asdfasdf</b><br>"); QMessageBox::warning(this,"Asdf",text.toPlainText()); Название: Re: Как лучше всего проеобразовать HTML текст в обычный Отправлено: crocus от Июль 10, 2008, 02:42 Попробуй может данные считывать в QByteArray сначала (как в /demos/textedit). И посмотри на QTextDocument.
Название: Re: Как лучше всего проеобразовать HTML текст в обычный Отправлено: Hort от Июль 10, 2008, 02:46 Попробуй может данные считывать в QByteArray сначала (как в /demos/textedit). И посмотри на QTextDocument. я так понимаю QTextDocument этож не виджет. т.е. я могу например создать статически в конструкторе своего класса QTextDocument (чтобы после выхода из конструктора он разрушился как обычная переменная)?Название: Re: Как лучше всего проеобразовать HTML текст в обычный Отправлено: crocus от Июль 10, 2008, 02:57 Конечно.
Цитировать The QTextDocument class holds formatted text ... Название: Re: Как лучше всего проеобразовать HTML текст в обычный Отправлено: Alexandr Az от Июль 10, 2008, 11:54 А в HTML строго определена структура?.
Я бы рассматривал HTML как XML и через дом модель грепал что мне нужно. Правда есть недостаток, сам HTML должен быть до ужаса "правильным" Название: Re: Как лучше всего проеобразовать HTML текст в обычный Отправлено: Hort от Июль 10, 2008, 13:39 А в HTML строго определена структура?. сделал модель, в которой два текстовых поля - одно полное HTML, второе сокращенное до 1 строки с обычным текстом. когда сохраняется из QTextEdit то записываются сразу два поля. В файл на диске будет сохраняться только HTML а читаться и заноситься при открытии файла во второе поле будет через QTextDocument. Как мне показалось, это наиболее оптимальный вариант в плане быстродействия БД.Я бы рассматривал HTML как XML и через дом модель грепал что мне нужно. Правда есть недостаток, сам HTML должен быть до ужаса "правильным" |