Есть содержимое текстового файла:
user_id_1; user_name_1; phone_number_1;
user_id_2; user_name_2; phone_number_2;
Нужно перевести это все в QML TableView под столбцами userid, username, phonenumber(хочу понять логику работы). Собственно сам интерфейс нарисован:
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
Window {
visible: true
width: 640
height: 480
title: qsTr("Work application")
Connections {
target: app
onSendToQML: {
pathtxt.text = path
}
}
TableView {
sortIndicatorOrder: 0
anchors.bottomMargin: 55
anchors.fill: parent
TableViewColumn {
role: "user_id" // Эти роли совпадают с названиями ролей в C++ модели
title: "User ID"
}
TableViewColumn {
role: "username" // Эти роли совпадают с названиями ролей в C++ модели
title: "Username"
}
TableViewColumn {
role: "phone_number" // Эти роли совпадают с названиями ролей в C++ модели
title: "Phone number"
}
// Устанавливаем модель в TableView
model: myModel
Button {
x: 533
y: 441
text: "Задать путь!"
onClicked: app.receiveFromQml()
}
TextInput {
x: 250
y: 441
width: 224
height: 23
horizontalAlignment: Text.AlignLeft
font.family: "Arial"
cursorVisible: true
}
Text {
id: pathtxt
x: 0
y: 441
width: 223
height: 23
text: "Введите путь до файла с расширением .txt: "
textFormat: Text.AutoText
horizontalAlignment: Text.AlignLeft
}
}
}
И реализован участок кода для извлечения строк из файла:
void app::receiveFromQml(QString path)
{
QFile file1(path);
if(file1.exists())
{
QTextStream stream(&file1);
while (!stream.atEnd())
{
QString line = stream.readLine();
}
}
}
Вам нужно создать под это дело модель на стороне С++, а потом уже передать её параметру model
вашего TableView
. Как это делать написано тут - тыц
Приведу пример из вышеприведенного источника, имеем ListView модель:
ListView {
width: 100; height: 100
model: myModel
delegate: Rectangle {
height: 25
width: 100
Text { text: modelData }
}
}
На стороне С++, чтобы привязать QStringList в виде модели делаем следующее:
QStringList dataList;
dataList.append("Item 1");
dataList.append("Item 2");
dataList.append("Item 3");
dataList.append("Item 4");
QQuickView view;
QQmlContext *ctxt = view.rootContext();
ctxt->setContextProperty("myModel", QVariant::fromValue(dataList));
Пример на русском с хабра: тыц
Виртуальный выделенный сервер (VDS) становится отличным выбором
Мне надо каждому QList ImageList; присвоить определённый индекс
Поднимаясь по лестнице, заяц прыгает либо на следующую ступеньку, либо через одну, либо через двеСколькими способами он может поднятся на ступеньку...