gpt4 book ai didi

javascript - 用于在桌面应用程序中运行 javascript (D3) 的 QWebView - HTML 更改时重新加载缓慢

转载 作者:行者123 更新时间:2023-11-30 05:03:33 25 4
gpt4 key购买 nike

我正在使用 QWebView 来显示使用 javascript 和 D3 的图表。有一个组合框可以选择不同的数据集。每次选择新数据集时,都会进行一些计算,然后使用新数据重新初始化 javascript 并将其设置为 html 字符串。然后使用 QWebView::setHtml() 重置 QWebview

如果我多次更改组合框的值,每次绘图加载速度都会呈指数级下降,直到它最终卡住。有时最终会加载,有时不会。

(我不确定 javascript 是否相关 - 这不是我的专业领域,所以我还没有花时间去理解它。我希望这个问题可以用 Qt 代码解决 - 但让我知道并且我可以包括在内)

来自 QWebView 文档:“立即加载 html;异步加载外部对象。”

我的猜测是 javascript 继续在后台执行,并且在更新和重新加载 html 时它不会停止。有办法阻止这种情况吗?

初始化和更新代码如下:

dataView::dataView(QWidget* parent) : QWidget(parent)
{
init();
}

void dataView::init()
{
webView = new QWebView();
// Need path to exe as this is where the local copies of the js files are.
QUrl path = webView->url();
path.setUrl(QCoreApplication::applicationDirPath());
m_jsPath = path.toString().toStdString();

// Initialise the html string
htmlText=""

webSetting = webView->settings();

// Maybe doing nothing-----------------------
webSetting->setObjectCacheCapacities(0, 0, 0);
webSetting->setMaximumPagesInCache(1);
//--------------------------------------------

QPointer<QVBoxLayout> mainLayout = new QVBoxLayout();
mainLayout->addWidget(webView);
setLayout(mainLayout);
}

void dataview::updatePlot()
{
//Get new value and do some calculations

// Update html string with new data
std::string htmlString = "[new javascript]";

webView->setHtml(QString::fromLocal8bit(htmlString.c_str()));
}

最佳答案

QWebkit 5.5 似乎有问题。我用Qt5.3编译,问题不存在。

关于javascript - 用于在桌面应用程序中运行 javascript (D3) 的 QWebView - HTML 更改时重新加载缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49363838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com