關於QT中evaluateJavaScript()函數返回值的處理問題
by 寒風問雪
在QT中我們可以通過evaluateJavaScript()函數很方便的執行js語句,evaluatejavascript()函數返回的是js腳本文件的最后一行執行的結果,這個結果可以一個字符,數值,也可以是一個數組,甚至是一個js對象。返回的結果保存在QVariant中。通過實驗對於單個變量,QVariant可以很好地處理,也可以很方便轉換為其他類型,但實際中我們返回的有可能是一個數組,在js中,數組也是一個特殊的對象,對於數組,QVariant就不能很好的處理了。
我采用以下技巧解決了這個問題
首先利用QVariant中的成員函數type()可以得到返回的js數組在QVariant中是一個什么類型的數據,經過調試發現,是一個QVariantLIst型。這樣就好辦了,我們只需定義一個QVariantList對象來保存就行了。可以使用QVariant中的toLIst()函數將返回的js數組轉換成QVariantLIst型。但在調用QVarianList中的元素是要先進行非空測試if(!qvlist.isEmpty()),如果是空值,程序將會出錯。之后便可用qvlist.tostring()將其轉換為字符型。