Ich versuche, TelnetClient.I verwenden FileIO für Telnet lesen. Es gibt kein Problem lesen oder schreiben und erstellen Sie auch eine String-Liste, aber ich muss QStringList zu ListView aber ich bekomme Fehler: "m_model ist nicht definiert".QML - Wie verwende ich QStringList als ein Modell von ListView?
Ich schaffe QStringList:
QStringList FileIO::read() {
if (m_source.isEmpty()) {
emit error("source is empty");
return QStringList();
}
QFile file(m_source);
QString fileContent;
QString line;
QStringList list;
if (file.open(QIODevice::ReadWrite)) {
QTextStream t(&file);
line = t.readAll();
fileContent += line;
list.append(line.split("\r\n"));
foreach (QString item, list) {
if (item[0].isNumber()) {
list2.append(item);
}
}
QQmlContext *ctxt;
ctxt->setContextProperty("m_model", QVariant::fromValue(list2));
qDebug() << "\r\n\r\nlist2 =" << list2;
line = t.readAll();
qDebug() << "SOURCE" << m_source;
file.close();
}
else {
emit error("Unable to open the file");
return QStringList();
}
return list2;
Dies kann eine neue QStringList
erfolgreich machen und auch ordne ich meine String-Liste als Modell; m_model.
ListView {
id: listView1
x: 0
y: 0
model: m_model
delegate: Rectangle{
Text {text: modelData }
}
}
und hier ist meine ListView. Wenn ich so versuche, bekomme ich Fehler. Wie kann ich dieses Problem lösen? Wenn ich "list2" in main.cpp verwenden kann, kann ich das Problem lösen, aber ich weiß nicht, wie ich es in main.cpp verwenden kann, weil es in einer anderen Klasse existiert.
Vielen Dank!
'QQmlContext * ctxt; ctxt-> setContextProperty ("m_model", QVariant :: fromValue (list2)); 'Sie erstellen sogar kein ctxt-Objekt. Das Programm sollte bei diesem Schritt abstürzen. Trotz der Tatsache, dass Sie keine qml-Engine haben, gibt es überhaupt keinen Kontext. [This] (http://doc.qt.io/qt-5/qtquick-modelviewsdata-cppmodels.html) Link kann Ihnen auch helfen. – folibis