#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);
}
}