我在使用Qt 5.7.0和QML麻煩。我需要在運行時發現一些對象的屬性。的Qt/QML無法做出getOwnPropertyDescriptor工作
的目標是用在別處找到了一個純QML樹視圖。這個是用硬編碼的屬性構建的,以保存要顯示的值。這是一個非常簡單的樹視圖,它正是我需要的。使用控件2.0我沒有「股票」TreeView。
我的目標是改變純粹的QML TreeView,給他對象樹和特權名稱而不是硬編碼的名稱。
我不想使用一個完整的Qt模型有一個輕量級組件。
離開這個目標appart有時可以動態地請求一個屬性值,只知道它在運行時的名稱。例如,在C#和Java中,使用反射很容易實現。
從C#世界即將我在尋找同一個概念。在我的用例中,對象不是純粹的QML,而是由qmlRegisterType公開的C++。
我打算使用Object.getOwnPropertyDescriptor,但我不能讓它工作,因爲我想,測試小時後...
這裏是純QML/JS
import QtQuick 2.0
Item {
id: myTest
property int myProp : 1234
function test() {
console.log("_________________TEST_________________");
console.log(Object.getOwnPropertyNames(myTest))
console.log(myTest.hasOwnProperty("myProp"))
console.log(Object.getOwnPropertyDescriptor(myTest, "myProp"));
console.log("_________________TEST_________________");
}
}
一個POC
在日誌中我得到:
據行「QML:真」的「hasOwnProperty(‘myProp’)」找物業,說「真」。
但下一行試圖獲得屬性描述符返回「不確定」。
誰可以解決我的問題將是我的英雄之一!
所以屬性沒有被定義爲'readonly'嗎?一個簡短的片段,我需要想象「TreeView」的結構會很好。只要'hardcoded'不是'readonly'(在C++:沒有設置器)應該是可行的。 – derM