PDA

View Full Version : Parse QTextBlock from QTextDocument problem



patrik08
5th April 2008, 09:26
On parse and iterate QTextBlock i can find all elements! only <hr> horizzontal line i can not find, is this element hidden on a property qvariant nummer from QTextBlockFormat or QTextCharFormat.. ?

http://doc.trolltech.com/4.1/qtextformat.html#intProperty

How i can find the objekt?

I wand to export my xhtml + class name that I have put on QTextBlockFormat Property..



HandleBlock( QTextBlock para , QDomElement appender )
{
QTextCharFormat paraformats;
QDomElement paragraph = dom.createElement("p");
QTextBlock::iterator de;

for (de = para.begin(); !(de.atEnd()); ++de) {

QTextFragment fr = de.fragment();

if (fr.isValid()) {
const QTextCharFormat base = fr.charFormat();
QTextImageFormat Pics = base.toImageFormat();
QTextTableFormat Tabl = base.toTableFormat();
QTextListFormat Uls = base.toListFormat();

if (Pics.isValid()) {
........ /// image
} else if (Tabl.isValid()) {
........ /// table
} else if (Uls.isValid()) {
........ //// ul li
} else if (base.isAnchor() && base.anchorHref() !="" ) {
...... ///link
} else if (para.charFormat() !=fr.charFormat()) {
/* found diffs from fragment to paragraph ... */
if (para.text() == fr.text()) {
///// no span only format append
} else {
////span + format
}
} else {

QString txtfrag = fr.text();
QString txt = Qt::escape(txtfrag);
QString forcedLineBreakRegExp = QString::fromLatin1("[\\na]");
forcedLineBreakRegExp[3] = QChar::LineSeparator;
const QStringList lines = txt.split(QRegExp(forcedLineBreakRegExp));

if (lines.size() > 0) {
for (int i = 0; i < lines.size(); ++i) {
const QString piece = lines.at(i); //// .chop(1)
paragraph.appendChild(dom.createTextNode(piece));
if (piece != lines.last() ) {
QDomElement breakline = dom.createElement("br");
paragraph.appendChild(breakline);
}
}
} else {
paragraph.appendChild(dom.createTextNode(txtfrag)) ; //// .chop(1)
}

}

}

}
appender.appendChild(paragraph);
}