Dear colleagues,
does anybody know about limits of text content in QTextEdit or QTextBrowser?
I would like to show 500k of text (5000 lines of 100chars per line) to the user and do some simple content manipulation (like inserting some snippets or set background colors for specific words). But as soon as this kind of adaption occurs, my text will be truncated to 154 lines.
Has anybody seen this before?
Env: Qt5.1.1, Win8, VS2012
Here is a small code to reproduce this anomaly.
// create the UI
dial->resize(400, 300);
vbl->addWidget(edit);
edit->setAcceptRichText(false);
dial->setLayout(vbl);
dial->show ();
// add some content text
for (int i=0; i<5000; i++)
edit->setPlainText (s);
// now lets manipulate the text. e.g. prepand "Start"
cursor.insertText ("Start: "); // this command truncates the content to 154 lines
// if you comment this out, the whole content will be shown
// create the UI
QDialog *dial = new QDialog;
dial->resize(400, 300);
QVBoxLayout *vbl = new QVBoxLayout(dial);
QTextEdit* edit = new QTextEdit();
vbl->addWidget(edit);
edit->setLineWrapMode(QTextEdit::NoWrap);
edit->setAcceptRichText(false);
dial->setLayout(vbl);
dial->show ();
// add some content text
QString s;
for (int i=0; i<5000; i++)
s += QString::number(i) + ": " + QString('x',120) + "\n";
edit->setPlainText (s);
// now lets manipulate the text. e.g. prepand "Start"
QTextCursor cursor = edit->textCursor();
cursor.movePosition(QTextCursor::Start);
cursor.insertText ("Start: "); // this command truncates the content to 154 lines
// if you comment this out, the whole content will be shown
To copy to clipboard, switch view to plain text mode
Thank you in advance.
Regards, Thomas
Added after 42 minutes:
I found in another question the source of the problem.
edit->setPlainText (and I think also the other variants) does it's job in parts of text in a kind of background tasks. Therefore I see only the first chunk of text.
When I add a QApplication:
rocessEvents (QEventLoop::AllEvents, 2000); it shows the complete text. It's only a workaround and not a real solution. A better way would be to do manipulation after a "finished" signal from the QTextEdit. But I don't see one. I only found "textChanged" and I think this will be fired with every little changing and not only by this initial setting.
Do you have any other idea?
Best regards,
Thomas
Bookmarks