是否有一種實例化內聯Component
(即在同一文件中定義)而不使用Loader
的方法?我不太關心使用Loader
的性能影響,因爲我正在用大量的Loader
包裝來污染我的文件。實例化沒有加載程序的內聯組件
1
A
回答
2
您可以使用Repeater
創建沒有Loader
的組件。 或者你甚至可以使用Qt.createComponent
來做到這一點。
看看Qt文檔約Dynamic Component Creation in QML
信息和示例有關Repeater
可以發現here
您甚至可以從字符串動態創建的組件:
Rectangle {
id: appWindow
width: 300; height: 300
Component.onCompleted: {
var newObject = Qt.createQmlObject('import QtQuick 2.0; Rectangle {color: "red"; width: 20; height: 20}',
appWindow,
"dynamicSnippet1");
}
}
4
我發現, Dynamic QML Object Creation from JavaScript頁面可能會引起誤解。
沒有提到使用聲明創建的Component
或使用模型。它只提到了Qt.createComponent
或Qt.createQmlObject
,它們在大多數情況下都是不必要的(並且依賴於字符串)。
我會建議使用內聯Component
與createObject()
,而不是更可讀和可維護的代碼。像這樣:
Rectangle {
id: appWindow
width: 300; height: 300
Component {
id: redRectComponent
Rectangle {
color: "red"
width: 20
height: 20
}
}
Component.onCompleted: {
var newObject = redRectComponent.createObject(appWindow);
}
}
如果我想勢在必行創建一個臨時對象,例如像一個彈出我會使用這種方法。
如果我要創建幾個這些對象的,我很可能會使用一個ListModel
與ListView
/Repeater
/Instantiator
/......像這樣:
ListModel {
id: rectModel
}
Column {
Repeater {
model: rectModel
Rectangle {
color: model.rectColor
width: 20
height: 20
}
}
}
Button {
onClicked: rectModel.append({rectColor: "red"})
}
我在這裏甚至沒有爲了處理對象創建,我只需在ListModel
中插入一些數據,Repeater
負責處理代表的實例化。
相關問題
- 1. 沒有實例化加載swf
- 2. QT插件加載程序沒有實例化一個UI插件
- 3. JAXB內容沒有實例化
- 4. 無法實例化UIApplication子類實例。沒有名爲%@的類加載「
- 5. Rails 3初始化程序:沒有這樣的文件加載
- 6. 沒有類型的程序集實例
- 7. 在實例化組件之前等待數據加載
- 8. WebBrowser控件沒有實例化文檔
- 9. 視圖沒有實例化
- 10. ViewPager沒有實例化
- 11. 沒有實例化BroadcastReceiver
- 12. 實例化的內部條件的新組件實例將是不確定的
- 13. WebApi中的實體框架序列化沒有急切加載
- 14. JFrame的實例沒有想象添加的組件
- 15. Java swing組件實例化
- 16. iPOJO組件實例化但沒有可見輸出
- 17. ReflectiveInjector沒有正確使用ngComponentOutlet指令實例化組件
- 18. 構造函數打破應用程序沒有類實例化
- 19. java.lang.RuntimeException:無法實例化應用程序。 ClassNotFoundException:沒有找到類
- 20. Rails的:從沒有訪問實例變量內聯JS
- 21. 沒有殺死應用程序實例
- 22. 的JavaScript沒有被調用的內聯事件處理程序
- 23. GWT序列化 - 類沒有可實例化的子類型
- 24. Mono C#應用程序實例化帶有boost組件的C++庫
- 25. Scala for Android應用程序:無法實例化activityinfo組件
- 26. 聲明實例類沒有實例化和初始化 - 澄清
- 27. 加載文件 - 是實例
- 28. PIC24固件引導加載程序沒有啓動加載程序
- 29. 在沒有激活/實例化的情況下,是否在.net中加載程序集?
- 30. 在實例化之後向jqGrid添加事件處理程序