Tôi có một ListView QML, trong đó đại biểu là C++ thực gắn liền với thành phần thiết bị, sử dụng các chủ đề và QWidgets
.Làm thế nào để vô hiệu hóa năng động quản lý đối tượng khi nhìn thấy các mục trong qml listview thay đổi?
Nhưng khi tôi cuộn ListView, hoặc mở rộng các đại biểu đến cửa sổ chương trình - không nhìn thấy đại biểu bị phá hủy.
Tôi có thể làm gì để lưu các đại biểu trong số ListModel
của mình?
mã ví dụ của tôi:
import Qt 4.7
Rectangle {
width: 320; height: 200; color: "white"
Text {
id: debugText
font.pixelSize: 24
color:"blue"
text: "count of created delegates: " + added.toString()
}
property int added: 0
Component {
id: delegate
Item {
id: wrapper
Component.onCompleted: added += 1
width: 180; height: 50
Column {
x: 5; y: 5
Text { text: '<b>Name:</b> ' + name }
Text { text: '<b>Number:</b> ' + number }
}
}
}
ListView {
width: parent.width; height: parent.height
model: contactModel
delegate: delegate
}
ListModel {
id: contactModel
ListElement {
name: "Bill Smith"
number: "555 3264"
}
ListElement {
name: "John Brown"
number: "555 8426"
}
ListElement {
name: "Sam Wise"
number: "555 0473"
}
ListElement {
name: "Bill Smith"
number: "555 3264"
}
ListElement {
name: "John Brown"
number: "555 8426"
}
ListElement {
name: "Sam Wise"
number: "555 0473"
}
}
}
Cảm ơn! Tôi giải quyết vấn đề! Cách đầu tiên - tôi tạo đối tượng Flickable, Column and Repeater và giải pháp này phù hợp với tôi. Cách thứ hai - đối với nhiều lưới trong giao diện chính (chương trình giống như SCADA) tôi sử dụng QObjectList, trong đó mỗi đối tượng là QObjectList, trong đó mỗi đối tượng là DataObject của tôi :)
Thuộc tính cacheBuffer: int – ctinka