for (int i = 0; i < centerPointsList.size (); i++)
{
QVariant holdInformation = map->page ()->mainFrame ()->evaluateJavaScript (QString ("constructFileName (%1).arg (centerPointsList[0].toFloat())"));
QList <QVariant> allListObj = holdInformation.toList ();
QList <QVariant> fileNamesList = allListObj[0].toList ();
std :: cout << fileNamesList[0].toFloat() << "================= \n";
}
这导致:
“SyntaxError:行上的解析错误:1来源:未定义”
分段错误
我猜这个错误与我将列表项传递给函数evaluateJavaScript
的方式有关。
更新:
我试过了:
for (int i = 0; i < centerPointsList.size (); i++)
{
QVariant holdInformation = map->page ()->mainFrame ()->evaluateJavaScript (QString ("constructFileName (%1)").arg (centerPointsList [0].toFloat ()));
导致:
“TypeError:表达式的结果'centerPointFileName.split'[undefined]不是函数。在线:65来源:file:///.../index.html”
函数constructFileName
(在Javascript中)如下:
function constructFileName (centerPointFileName)
{
var removeSpaces = centerPointFileName.split (" ");
var fileNameWithoutSpaces = "", i;
for (i = 0; i < removeSpaces.length; i++)
fileNameWithoutSpaces = fileNameWithoutSpaces + removeSpaces [i];
答案 0 :(得分:1)
根据您的更新,您的JavaScript函数需要一个字符串参数。最简单的方法应如下所示:
QString info = QString("constructFileName('%1')").arg(centerPointsList[i].toFloat());
QVariant holdInformation = map->page()->mainFrame()->evaluateJavaScript(info);
但是,一般情况下这并不完全安全 - 如果插值参数%1
包含反斜杠,双引号或其他特殊符号,则需要首先对其进行转义。我无法评论应该如何做,因为我从未使用过Qt:)