我试图传递一些qml组件所需的对象。问题是我不能引用这个对象而不说它未定义。
Item {
id: root
property alias db: database // this works for some reason
Database {
id: database
Component.onCompleted: {
connect("sqlite3", "dbname=database.db")
deleteTables();
createTables();
}
}
ContactImageProvider {
id: contactImageProvider
database: db // this works for some reason
database: root.database // This would be undefined
database: database // no loop detected but still null
}
}
所以我非常困惑,我应该能够通过对象传递依赖关系而没有最令人困惑的命名方案。这可能是什么BTW。也许我需要一些控件中的颜色,但也希望将它传递给另一个控件。整个范围名称解析文档非常不清楚。我无法做出我应该做的事情。
Item {
id: root
property Database database: Database {
id: database // if no id then this doesnt work
Component.onCompleted: {
connect("sqlite3", "dbname=database.db")
deleteTables();
createTables();
}
}
property alias db: database
ContactImageProvider {
id: contactImageProvider
database: db // this doesn't work. WHY? idk
database: database // works if id is on
}
}
如果我把它作为属性,别名似乎也不起作用。
答案 0 :(得分:0)
对于我之后的任何可怜的灵魂,似乎这与属性名称和id名称的解析之间的差异有关。我最终得到的是这个。
Item {
id: root
property Database database: Database {
// notice no id
Component.onCompleted: {
connect("sqlite3", "dbname=database.db")
deleteTables();
createTables();
}
}
ContactImageProvider {
id: contactImageProvider
database: root.database // I can explicitly get a property
}
}