Название: QTextTable - задать ID ? Отправлено: masha от Июль 31, 2009, 10:11 Может кто-нибудь знает, возможно ли для QTextTable задать ID или класс, что-нибудь, чтобы потом эти таблицы различались в Html представлении? Название: Re: QTextTable - задать ID ? Отправлено: registrationfedser87 от Июль 31, 2009, 12:27 Быть может это?
Код А формат установишь через Код
Название: Re: QTextTable - задать ID ? Отправлено: masha от Июль 31, 2009, 14:15 Попробовала, невышло, никаких изменений в html-коде.
Правда, взяла QTextTableFormat: QTextTableFormat tableFormat; tableFormat.setObjectIndex(ind); QTextTable* table = cursor.insertTable(2, 2, tableFormat); Просто, я документ потом разбираю не как объектную модель (тогда setObjectIndex() помог бы), а через QDomDocument. Название: Re: QTextTable - задать ID ? Отправлено: registrationfedser87 от Август 03, 2009, 12:08 Криво конечно, но может тогда в заголовок таблицы добавлять свою инфу, а при построении удалять. Т.е. когда сохраняешь документ ты id объекта записываешь в заголовок, когда загружаешь ты читаешь и удаляешь этот id из заголовка.
Название: Re: QTextTable - задать ID ? Отправлено: masha от Август 03, 2009, 14:47 Что-то не то.
Я ведь html документ получаю примерно так: QString strHtmlDoc = textEdit->toHtml(); //здесь надо, чтобы таблицы отличались QDomDocument doc; doc.setContent(strHtmlDoc); parser(doc); Видимо никак. Ну ладно, так как эти таблицы поразному создаются, они всё-таки у меня атрибутами отличаются: <table border="1" align="center" cellspacing="2"> <table border="1" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" cellspacing="2" cellpadding="5"> от этого и придется плясать. Название: Re: QTextTable - задать ID ? Отправлено: registrationfedser87 от Август 03, 2009, 15:02 parser()-твоя функция? ты ведь можешь прежде чем сохранять в strHtmlDoc пробежатся по всем таблицам и добавить например в конец таблицы строку с id. А при парсинге уже учитывать что последняя строка таблицы-это её id.
Вот пример "прохода" по таблицам: Код
Код
Название: Re: QTextTable - задать ID ? Отправлено: spectre71 от Август 04, 2009, 09:35 Можно примерно так:
Код
Соответветственно в updateXml нужно получить из XmlDoc сответствующий(по порядку, учитывая вложенность) QDomElement с "<table>" и добавить в него атрибут со значением MyTableId. Ну и естественно пересобрать QDomDocument с обновленными QDomElements; Название: Re: QTextTable - задать ID ? Отправлено: masha от Август 04, 2009, 14:00 ммм, видимо я коряво вопрос задаю ;D. У меня всё проще, мне не надо парсить саму таблицу, мне нужен только кусок её html-кода. А все таблицы у меня делятся на те которые мне нужно сохранить (в виде строки "<table>...</table>") и те, которые нужно проигнорировать. Всё что выше сказано было бы здорово, если бы у QTextFrame можно было бы взять html код, QTextFrame.document().toHtml() желаемого результата не даёт. Всё равно спасибо!
Название: Re: QTextTable - задать ID ? Отправлено: spectre71 от Август 04, 2009, 14:13 ммм, видимо я коряво вопрос задаю ;D. У меня всё проще, мне не надо парсить саму таблицу, мне нужен только кусок её html-кода. А все таблицы у меня делятся на те которые мне нужно сохранить (в виде строки "<table>...</table>") и те, которые нужно проигнорировать. Всё что выше сказано было бы здорово, если бы у QTextFrame можно было бы взять html код, QTextFrame.document().toHtml() желаемого результата не даёт. Всё равно спасибо! Всегда можно создать временный QTextDocument с неким QTextFrame и получить QTextDocument.toHtml()А вообще опиши задачу подробнее и привиди пример, а то никто похоже так и непонял что ты хочешь добиться! Название: Re: QTextTable - задать ID ? Отправлено: masha от Август 04, 2009, 18:16 Всегда можно создать временный QTextDocument с неким QTextFrame и получить QTextDocument.toHtml() Что-то я не нашла как это сделать. textFrame.document() - вернет весь документ, а не кусок.А вообще опиши задачу подробнее и привиди пример, а то никто похоже так и непонял что ты хочешь добиться! Да что-то не хотелось никого сильно нагружать :( В общем: цель - создать шаблон отчета; есть генератор отчетов, на его странице (графическая сцена) я размечаю только области: область текста и область таблицы с данными из БД. Область текста здесь - это графич. элемент, в свойстве "text" которого - html код. При запуске эта сцена анализируется и составляется сначала xml-док, потом он конвертится в html-док с целью открыть его в QTextEdit (здесь уже будут таблицы из БД), заполнить шаблон базовыми данными, где можно вставить простую табличку и сохранить содержимое текстовых областей обратно в xml-отчет. Вот такая лабудень :) Даже если мне удаётся сначала сохранить нужные таблички, когда они выглядели вот так: <table cellspacing="2" border="3" align="center" > - без атрибута style, в отличие от БД-шных, то при повторном запуске (после m_textEdit->setHtml(m_HtmlDocument);) они уже выглядят вот так: <table border="3" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" align="center" cellspacing="2" cellpadding="0"> добавляется атрибут style, и все таблицы выглядят одинаково :( Думаю, тут никакие индексы бы не помогли. Название: Re: QTextTable - задать ID ? Отправлено: spectre71 от Август 04, 2009, 20:01 Всегда можно создать временный QTextDocument с неким QTextFrame и получить QTextDocument.toHtml() Что-то я не нашла как это сделать. textFrame.document() - вернет весь документ, а не кусок.А вообще описывал другой вариант: 1) при добавлении(или еще когда) таблиц устанавливаем им свое property со значением QTextTable::setProperty("MyTableId", int); 2) Закончили работу с текстом, получили XML 3) Пребираем рекурсивно фреймы документа, берем из них те которые являются таблицими, получаем у них значение нашего property. Пребираем рекурсивно елементы XML берем елементы "<table>" добавляем атрибут со значением из соответствующего property. Поскольку вложенность таблиц в докуенте и XML совпадает, проблем с соответствием не должно быть. Название: Re: QTextTable - задать ID ? Отправлено: masha от Август 05, 2009, 10:04 Так я примерно так и пыталась это сделать. В общем, первый раз мне удаётся его сохранить, но какой бы атрибут в теге <table> я не написала, он (textEdit) потом его всё равно проигнарирует, Qt оставляет только border, align, cellspacing, cellpadding и style. И, соответственно, не будет уже у TextFrame никакого property(MyTableId), это ведь будет уже новый html док. --> Таблицы будут снова выглядеть одинаково. Только если вручную, например, через конткстное меню, снова устанавливать для нужных таблиц свойство MyTableId :). Короче, как-нибудь некрасиво из этой ситуации выйти можно, а лучше в корне пересмотреть весь механизм :( . Просто так было проще всего, все стили, цвета, пробелы - всё само сохранялось, без проблем. А тут эти таблицы... Название: Re: QTextTable - задать ID ? Отправлено: Tonal от Август 05, 2009, 10:08 Может попробовать QWebView?
Он весь html + css поддерживает. Название: Re: QTextTable - задать ID ? Отправлено: masha от Август 05, 2009, 11:41 Может попробовать QWebView? Он весь html + css поддерживает. Мне ж его редактировать надо. QWebView - это вроде просто просмотрщик. |