Разделение строки и отображение в Qtreewidget

#c #arrays #string #qt

#c #массивы #строка #qt

Вопрос:

Мои знания и опыт в программировании очень скудны. Я использую этот блок кода, чтобы открыть нужный файл при нажатии на кнопку ;

QString filename = QFileDialog::GetOpenFileName();

 QFile file(filename);
 if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
     return;

 while (!file.atEnd())
      {
          QByteArray line = file.readLine();
          processline(line);
      }
  

И с помощью этой строки я показываю это в QTextBrowser

аннулирует MainWindow::processline(QByteArray paramline) {

 ui->veri_cikis->append(paramline.constData());
  

}

Данные в файле выглядят следующим образом

0;100;0

0;100;24

24;500;24

24;100;6

6;100;6

я должен разделить данные пометкой «;» и отобразить их в столбцах Qtreewidget. Как мне это сделать? И я должен показывать каждую первую часть в первом столбце, а вторую — во втором столбце и так далее. Всего у меня 3 столбца

Комментарии:

1. Вы хотите представление в виде дерева или таблицы?

2. Используйте функцию «split» . Разделителем является «;».

3. Древовидный вид был бы лучше.

Ответ №1:

Я думаю, что то, что вы описываете, лучше подходит скорее для табличного представления, чем для древовидного. Чтобы разобрать ваши строки и разделить их по символу ‘;’, вы можете использовать QByteArray::split() функцию. Вот пример кода, который создает и заполняет табличное представление элементами, считываемыми из файла:

 QFile file(filename);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    return;

QTableWidget *table = new QTableWidget;
int row = 0;
while (!file.atEnd()) {
    QByteArray line = file.readLine();
    QList<QByteArray> tokens = line.split(';');
    int column = 0;
    row  ;
    foreach (QByteArray ba, tokens) {
        QTableWidgetItem *item = new QTableWidgetItem(ba);
        table->setItem(row, column  , item);
    }
}