Bugün QtQuick2 ile biraz oynamak istedim. Bu yüzden çok basit Qt Quick1 uygulamasını Quick2'ye başlattım. Bu uygulama bazı modeller kullanır. Ve Qt5 modellerinde beklediğim gibi çalışmıyor: Rolleri kullanarak veriye erişemiyorum.Qt5 ve Qt modellerinde rol ve roller 4.8
Bu benim QML kodudur:
import QtQuick 2.0
Rectangle {
width: 800
height: 360
ListView {
model: mainModel
spacing: 5
anchors.fill: parent
orientation: ListView.Vertical
delegate: Text {
text: "1"
Component.onCompleted: {
console.log(mainModel);
console.log(mainModel.roles());
console.log(model);
console.log(model.homm); // `homm` is my roleName
console.log(homm);
}
}
Qt4.8 ben ama Qt5 içinde Yapamam (benim roleName = homm
bu QML olarak) roleName
sözdizimi kullanarak veri almak başardı.
MainModel(0x7fff08beff80)
homm,wtf
QQuickVDMAbstractItemModelData(0x23c96e0)
undefined
file:///media/disk/kakadu/prog/qt/quick2test/qml/quick2test/main.qml:20: ReferenceError: homm is not defined
Ve beklendiği gibi roller çalışmak kullanarak veri erişimini görebileceğiniz gibi bu Çabuk 1.1
MainModel(0x7fffe58182f0)
undefined
QDeclarativeVisualDataModelData(0x2372ea0)
QVariant(MiniModel*)
QVariant(MiniModel*)
içindir: Bu konsolda yazılır budur. Sizin için test uygulamaları oluşturdum: for Qt5 ve for Qt 4.8. Umarım maddenin kalbi bulmam için bana yardım edeceksin.
P.S. Qt5 sürümünde bazı değişiklikler yaptım. Qt5 yönteminde setRoleNames()
geçersizdir ve roleNames()
'un geçersiz kılınması önerilir. Bunu baştan sona yaptım.
P.P.S. Kod örneğim, GNU/Linux x64
Qt5 kodunuz derlenmiyor. –
trollixx, "MiniModel" hakkında konuşuyorsanız: yasadışı üye başlatma 'Bunu bilmiyordu. GNU/Linux x64 üzerinde test edilmiştim. MSVC derleyicisinde neyin yanlış olduğunu araştırmak için biraz zamana ihtiyacım var. – Kakadu
Ubuntu Linux x86_64, g ++ 4.6.3. –