QTextBrowser 无法在 运行 时间显示所有数据
QTextBrowser could not show all data at run time
我的问题是 QTextBrowser 无法显示附加到它的所有数据。
我在 windows 上使用 qt5.4。
我的 class 是这样的:
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代替这个,但是还是没能成功。我想在 运行 时间显示所有数据或可以显示的部分数据。因为它死时只停止第一段。另外,我不想通过读取文本文件来显示数据。
有人遇到过这种情况吗?
提前致谢。
实际上,我认为没有可行的解决方案,您不能在 运行 时间保存此数据,这非常取决于硬件。您无法保证在整个块中找到所需的内存。
所以我使用 QPlainTextEdit 并通过在构造函数中使用 setMaximumBlockCount(100000)
函数将显示的文本限制为 100000 个块。我用 this->appendPlainText(text)
附加了文本。因此,输出 windows 总是显示最后 100000 个文本块。其余数据可以保存文本文件或类似文件。所以用户可以从那里查看所有这些。
我的问题是 QTextBrowser 无法显示附加到它的所有数据。 我在 windows 上使用 qt5.4。 我的 class 是这样的:
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代替这个,但是还是没能成功。我想在 运行 时间显示所有数据或可以显示的部分数据。因为它死时只停止第一段。另外,我不想通过读取文本文件来显示数据。
有人遇到过这种情况吗?
提前致谢。
实际上,我认为没有可行的解决方案,您不能在 运行 时间保存此数据,这非常取决于硬件。您无法保证在整个块中找到所需的内存。
所以我使用 QPlainTextEdit 并通过在构造函数中使用 setMaximumBlockCount(100000)
函数将显示的文本限制为 100000 个块。我用 this->appendPlainText(text)
附加了文本。因此,输出 windows 总是显示最后 100000 个文本块。其余数据可以保存文本文件或类似文件。所以用户可以从那里查看所有这些。