QTextBrowser 无法在运行时显示所有数据
Posted
技术标签:
【中文标题】QTextBrowser 无法在运行时显示所有数据【英文标题】:QTextBrowser could not show all data at run time 【发布时间】:2016-02-03 18:11:57 【问题描述】:我的问题是 QTextBrowser 无法显示附加到它的所有数据。 我在 Windows 上使用 qt5.4。 我的课是这样的:
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 而不是这个,但我无法再次成功。我想在运行时显示所有数据或可以显示的部分数据。因为它死时只停止第一段。另外,我不想通过读取文本文件来显示数据。
有人遇到这种情况吗?
提前致谢。
【问题讨论】:
我们在谈论多少数据? 大约 100Mb。但它可以更高或更低...... 对我来说似乎仍然很多。一次显示这么多文本有什么意义? 有时,您无法决定要求:) 【参考方案1】:实际上,我认为没有可行的解决方案,你不能在运行时保存这些数据,这非常依赖于硬件。您不能保证将所需的内存作为一个整体找到。
所以我使用 QPlainTextEdit 并通过在构造函数中使用 setMaximumBlockCount(100000)
function 将显示的文本限制为 100000 个块。我用this->appendPlainText(text)
附加了文本。因此,输出窗口总是显示最后 100000 个文本块。其余数据可以保存一个文本文件或类似的东西。所以用户可以从那里查看所有这些。
【讨论】:
以上是关于QTextBrowser 无法在运行时显示所有数据的主要内容,如果未能解决你的问题,请参考以下文章
win8.1 64位的笔记本,打开cuda 6 notebook 安装文件时显示此应用无法在你的电脑上运行