Перевести строки из текстового файла в QML TableView

134
01 сентября 2019, 04:50

Есть содержимое текстового файла:

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();
        }
    }
}
Answer 1

Вам нужно создать под это дело модель на стороне С++, а потом уже передать её параметру 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));

Пример на русском с хабра: тыц

READ ALSO
Как создать QList <QList <QImage>> SourceImageList; в котором каждый QList <QImage> был бы с определённым индексом?

Как создать QList <QList <QImage>> SourceImageList; в котором каждый QList <QImage> был бы с определённым индексом?

Мне надо каждому QList ImageList; присвоить определённый индекс

143
Оптимизация и статические функции

Оптимизация и статические функции

Вопрос навеян следующим утверждением:

132
Как оптимизировать рекурсию?

Как оптимизировать рекурсию?

Поднимаясь по лестнице, заяц прыгает либо на следующую ступеньку, либо через одну, либо через двеСколькими способами он может поднятся на ступеньку...

124
Звук и преобразование фурье

Звук и преобразование фурье

У меня есть некий звук с микрофонаЧастота дискретизации 44100

97