2013-01-05 43 views
0
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"; 

    } 

這導致:如何將參數傳遞給evaluateJavaScript函數?

"SyntaxError: Parse error on line:1 Source:undefined"
Segmentation fault

我猜測的錯誤是在我傳遞的列表項功能evaluateJavaScript的方式。

UPDATE:


我嘗試這樣做:

for (int i = 0; i < centerPointsList.size(); i++) 
{ 
    QVariant holdInformation = map->page()->mainFrame()->evaluateJavaScript (QString ("constructFileName (%1)").arg (centerPointsList [0].toFloat())); 

這導致:

"TypeError: Result of expression 'centerPointFileName.split' [undefined] is not a function. on line:65 Source:file:///.../index.html"

函數constructFileName(在Javascript)如下:

+0

您是否在尋找'QString(「constructFileName(%1)」)。arg(centerPointsList [0] .toFloat())' ? – DCoder

+0

@DCoder請參閱更新。 –

回答

1

根據您的更新,您的JavaScript函數需要一個字符串參數。最簡單的方法應該是這樣的:

QString info = QString("constructFileName('%1')").arg(centerPointsList[i].toFloat()); 
QVariant holdInformation = map->page()->mainFrame()->evaluateJavaScript(info); 

然而,一般來說,這不是完全安全的 - 如果插值參數%1包含反斜線,雙引號或其他特殊符號,他們需要先逃脫。我不能評論應該怎麼做,因爲我從來沒有與Qt合作:)