में मॉडल और भूमिकाएं आज मैं क्यूटीक्विक 2 के साथ थोड़ा सा खेलना चाहता था। इसलिए मैंने क्विक 2 पर बहुत ही सरल क्यूटी क्विक 1 ऐप बंद करना शुरू कर दिया है। यह ऐप कुछ मॉडलों का उपयोग करता है। और क्यूटी 5 मॉडल में काम नहीं कर रहा है क्योंकि मैं उम्मीद करता हूं: मैं भूमिकाओं का उपयोग कर डेटा तक नहीं पहुंच सकता।क्यूटी 5 और क्यूटी 4.8
यह मेरा QML कोड है:
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 में मैं (इस QML में मेरी roleName = homm
) roleName
सिंटैक्स का उपयोग डेटा प्राप्त करने लेकिन Qt5 में मैं नहीं कर सकता कर रहा था। यही कारण है कि कंसोल में लिखा है है:
MainModel(0x7fff08beff80)
homm,wtf
QQuickVDMAbstractItemModelData(0x23c96e0)
undefined
file:///media/disk/kakadu/prog/qt/quick2test/qml/quick2test/main.qml:20: ReferenceError: homm is not defined
और वह त्वरित 1,1
MainModel(0x7fffe58182f0)
undefined
QDeclarativeVisualDataModelData(0x2372ea0)
QVariant(MiniModel*)
QVariant(MiniModel*)
के लिए है कि आप का उपयोग कर भूमिकाओं अपेक्षित तरीके से डेटा तक पहुँचने देख सकते हैं। मैंने आपके लिए टेस्ट ऐप बनाए हैं: for Qt5 और for Qt 4.8। मुझे आशा है कि आप मुझे मामले के दिल को खोजने में मदद करेंगे।
पीएस मैंने क्यूटी 5 संस्करण में कुछ बदलाव किए हैं। Qt5 विधि setRoleNames()
अप्रचलित है और roleNames()
की ओवरराइडिंग की अनुशंसा की जाती है। मैंने यह ओवरराइड किया है।
पी.पी.एस. मेरा कोड उदाहरण जीएनयू/लिनक्स x64
आपका क्यूटी 5 कोड संकलित नहीं करता है। –
ट्रोलिक्स, यदि आप 'मिनीमोडेल' के बारे में बात कर रहे हैं: अवैध सदस्य प्रारंभिकरण 'यह उसे नहीं पता था। मुझे परीक्षण किया गया था कि जीएनयू/लिनक्स x64 पर। मुझे एमएसवीसी कंपाइलर में क्या गलत है इसकी जांच करने के लिए कुछ समय चाहिए। – Kakadu
उबंटू लिनक्स x86_64, जी ++ 4.6.3। –