2013-01-05 5 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 함수에 인수를 전달하는 방법은 무엇입니까?</p> <blockquote> <p>"SyntaxError: Parse error on line:1 Source:undefined"<br> Segmentation fault</p> </blockquote> <p>나는 오류가 나는 기능 <code>evaluateJavaScript</code>에 목록 항목을 통과하고있는 방법이라고 추측하고있다 :

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은 :

+0

arg (centerPointsList [0] .toFloat())'QString ("constructFileName (% 1)") ? – DCoder

+0

@DCoder 업데이트를 참조하십시오. –

답변

1

업데이트에 따르면 JavaScript 함수에는 문자열 인수가 필요합니다. 가장 간단한 방법은 다음과 같아야합니다

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

그러나, 일반적으로이 완전히 안전하지 않습니다 - 보간 인수 %1 백 슬래시, 따옴표 또는 기타 특수 기호가 포함되어있는 경우, 그들은 먼저 탈출해야합니다. 내가 Qt로 일한 적이 없기 때문에 어떻게해야하는지에 대해서는 언급 할 수 없다.