QTextEdit 需要越来越多的时间来绘制文本
QTextEdit takes an increasing amount of time to draw the text
我正在使用 QTextEdit
,并且我以 1Hz 的速率更新文本(特别是 setHTML
)。
最初setHtml
方法很快(只有几毫秒);但是在 运行 12 小时后,setHTML
到 return 需要 256 毫秒,数据是一个简单的 table,有 5 列和 10 行。
程序运行时间越长,这种增加就会持续。
有人明白这是怎么回事吗?而且,更重要的是,我怎样才能让它停止?
基本上我在做的是:
// get the start time
boost::posix_time::ptime start_time = boost::posix_time::microsec_clock::universal_time();
display->setHtml(text);
boost::posix_time::ptime end_time = boost::posix_time::microsec_clock::universal_time();
boost::posix_time::time_duration time_diff = end_time - start_time;
m_renderTimeDebug = double(time_diff.fractional_seconds() / 1000 );
std::cout << "DRAW TIME; took " << m_renderTimeDebug << " ms " << std::endl;
此处示例link
可能是内存泄漏。您是否正在分配新内存来保存您的文本或程序中的其他地方?您可以使用例如轻松找到valgrind 如果您使用的是 unix 兼容系统或调试器。随着时间的推移,您处理的图像是否也变大了?
我发现这个问题已经在 Qt 5.9 中得到解决。
我假设这是由 Qt 人员发现并修复的。我写了一个针对 Qt 5.8 的缺陷 QTBUG:61137
我正在使用 QTextEdit
,并且我以 1Hz 的速率更新文本(特别是 setHTML
)。
最初setHtml
方法很快(只有几毫秒);但是在 运行 12 小时后,setHTML
到 return 需要 256 毫秒,数据是一个简单的 table,有 5 列和 10 行。
程序运行时间越长,这种增加就会持续。
有人明白这是怎么回事吗?而且,更重要的是,我怎样才能让它停止?
基本上我在做的是:
// get the start time
boost::posix_time::ptime start_time = boost::posix_time::microsec_clock::universal_time();
display->setHtml(text);
boost::posix_time::ptime end_time = boost::posix_time::microsec_clock::universal_time();
boost::posix_time::time_duration time_diff = end_time - start_time;
m_renderTimeDebug = double(time_diff.fractional_seconds() / 1000 );
std::cout << "DRAW TIME; took " << m_renderTimeDebug << " ms " << std::endl;
此处示例link
可能是内存泄漏。您是否正在分配新内存来保存您的文本或程序中的其他地方?您可以使用例如轻松找到valgrind 如果您使用的是 unix 兼容系统或调试器。随着时间的推移,您处理的图像是否也变大了?
我发现这个问题已经在 Qt 5.9 中得到解决。
我假设这是由 Qt 人员发现并修复的。我写了一个针对 Qt 5.8 的缺陷 QTBUG:61137