QTextBrowser не смог показать все данные во время выполнения

Моя проблема в том, что QTextBrowser не может показать все данные, которые добавлены к нему.
Я использую qt5.4 на Windows.
Мой класс, как это:

class InfoTextBrowser : public QTextBrowser
{
Q_OBJECT

public:
InfoTextBrowser(QObject *parent);
~InfoTextBrowser();
public slots:
void appendText(const QString& text) {

try
{

this->append(text);
}
catch(std::bad_alloc& e)
{
if(!memoryError)
{
QMessageBox::warning(this,"My app", QStringLiteral("Out of Memory"),QMessageBox::Ok);
this->clear();
memoryError = true;
}
}

QScrollBar* myBar = this->verticalScrollBar();
if (myBar!=NULL)
myBar->setValue(myBar->maximum());
};
private:
void contextMenuEvent(QContextMenuEvent *event);
private:
bool memoryError;
};

Сначала я получил исключение bad_alloc, а затем переместил свое приложение на 64-битную, тогда я не получил никакого исключения. Но когда я запускаю свою программу, QTextBrowser перестает показывать данные через некоторое время. Он умирает и не может быть очищен или обновлен.

Я также попробовал QPlainTextEdit вместо этого, но снова не смог добиться успеха. Я хочу показать все данные во время выполнения или какую-то их часть, которые могут быть показаны. Потому что он останавливается только первый абзац, когда он умирает. Кроме того, я не хочу показывать данные путем чтения из текстового файла.

Кто-нибудь сталкивался с такой ситуацией?

Заранее спасибо.

0

Решение

Собственно, я решил, что для этого нет подходящего решения, вы не можете хранить эти данные во время выполнения, это очень зависит от аппаратного обеспечения. У вас нет гарантии, чтобы найти необходимую память в целом блоке.

Так что я использовал QPlainTextEdit и ограничен показанным текстом как 100000 блоков с помощью setMaximumBlockCount(100000)функция в конструкторе. Я добавил текст с this->appendPlainText(text), Таким образом, выходные окна всегда показывают последние 100000 блоков текста. Остальные данные могут содержать текстовый файл или что-то в этом роде. Таким образом, пользователь может посмотреть их все оттуда.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]