wieder gut ich habe eine Frage (und vielleicht ein Problem), ich ein Programm mit qt und qml in qt5 und qml mit qtquick 2.0, und ich habe eine C++ - Modell qlist, und ich brauche die Liste im laufenden Betrieb ändern, ich benutze q QQmlListProperty und zeigt die Elemente in QML, aber sie sind nicht verstecken und zeigen in dem Moment, wenn ich hinzufügen oder entfernen, mein Code nächsten:Verwenden QQmlListProperty zu zeigen und zu ändern QList in Qml
class ConceptsList: public QObject{
Q_OBJECT
Q_PROPERTY(QQmlListProperty<Concept> concepts READ concepts NOTIFY conceptsChanged)
Q_CLASSINFO("DefaultProperty", "concepts")
public:
ConceptsList(QObject *parent=0);
QQmlListProperty<Concept> concepts();
Q_INVOKABLE static void append_concept(QQmlListProperty<Concept> *list, Concept *cpt);
Q_INVOKABLE void removeConcept(int index);
Q_INVOKABLE void addConcept(QString m_id,QString description, QString quantity, QString price, QString unit, QString total);
Q_INVOKABLE int countConcepts();
static void clearConcepts(QQmlListProperty<Concept> *property);
static int conceptsSize(QQmlListProperty<Concept> *property);
static Concept *conceptAt(QQmlListProperty<Concept> *property, int index);
signals:
void conceptsChanged();
private:
QList<Concept *> m_concepts;
}
ich verwende listview und delegate und ich habe keine Probleme zu sehen, aber meine Frage ist, ob ich eine QQmlListProperty verwenden und die Qlist ändern kann, oder ich werde ein Formular ändern, um qlist qml zu offenbaren, wenn es möglich ist, wie die Methode von qml aufrufen, oder wie in C++ implementieren, frage ich, weil es wirklich wenig Zahl oder Beispiele mit Arbeit th gibt ist Form. in qml mein Code nächste:
ConceptsList{
id:cpts
concepts:[
Concept{
m_id:"7"
m_quantity: "3"
m_price: "1"
m_unit:"1"
m_description:"algo"
m_total:"2"
}
]
}
ListView {
id: listConceptsView
objectName: "list"
anchors.fill: parent
anchors.margins: 5
clip: true
focus: true
highlight: highlightBar
highlightFollowsCurrentItem: false
Component{
id: tableConceptDelegate
Item{
anchors.margins: 4
width: 515
height: 27
clip: true
Row {
spacing: 4
Text {
height: 26; width: 76
text: model.m_id
color: "black"
font.bold: true
horizontalAlignment: Text.AlignHCenter
}
...
...
Text {
height: 26; width: 120
text: model.m_total//amountTotal
color: "black"
font.bold: true
horizontalAlignment: Text.AlignHCenter
}
}
MouseArea {
id: mouse_area1
anchors.fill: parent
onClicked:
{
listConceptsView.currentIndex = index
}
}
}
}
delegate: tableConceptDelegate
model:cptCpt // i define this alias how cptCpt: cpt.concepts
}
als Kommentar dies gilt nur, wenn die Liste ausgesetzt ist, alle jedes Mal geändert (zum Beispiel dieser Liste alle mit einem HTTP-Anfrage bekommen geändert), oder wenn posible Laden Sie die gesamte Liste erneut, ohne dass sich dies auf den Ablauf des Programms auswirkt. – APRocha
append_concept (QQmlListProperty * Liste, Concept * cpt) sollte einen Fehler auslösen, sollte nicht vom Typ QQmlListProperty sein? –