4
我現在正在移植FitNesse的Slim-server,我現在有點兒被卡住了。 什麼I'm越來越像這些字符串:
用可變數量的參數調用QMetaObject :: invokeMethod()
("id_4", "call", "id", "setNumerator", "20")
("id_5", "call", "id", "setSomethingElse", "10", "8")
其中「setNumerator」和「setSomethingElse」是應該被調用和「20」,「10」和方法名「8」是我正在通過的論點。
所以我現在的問題是,我不知道如何使用一個調用invokeMethod這兩種方法。我目前的解決方法是這樣的:
//(if instructionLength==5)
metaObj->invokeMethod(className, methodName.toAscii().constData(), Qt::DirectConnection,
Q_ARG(QVariant, instructions.at(index).at(4)))
//(if instructionLength==6)
metaObj->invokeMethod(className, methodName.toAscii().constData(), Qt::DirectConnection, Q_RETURN_ARG(QVariant, retArg),
Q_ARG(QVariant, instructions.at(index).at(4)),
Q_ARG(QVariant, instructions.at(index).at(5)))
等等...
因此,一方面,似乎每invokeMethod中調用需要非常具體的信息,這使得它很難與一個做可變數量的參數。另一方面,必須有一種方法,所以我不必在兩次(或更晚:十次)時間內做同樣的事情。
所以問題是,還有另一種方法來做一個電話?
它似乎起初工作,但它不是。 它試圖用正確的參數調用正確的方法,但它失敗。例如: :AddFixture :: setSummand1(QVariant)通常有效,但現在不會 – LarissaGodzilla
您可以發佈您的代碼嗎? – crazyjul
問題是我將methodName-String轉換爲了Lower,所以名稱沒有匹配。 但現在它可以工作,所以謝謝。 – LarissaGodzilla