Russian Qt Forum
Апрель 26, 2024, 15:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt чтение текстового файла и запись в разные label  (Прочитано 7337 раз)
Kensant
Гость
« : Сентябрь 30, 2016, 18:12 »

Доброго времени суток, с Qt работаю совсем немного и столкнулся с проблемой.
Не могу разобраться как сделать, что бы из файла, первая строка с текстом была записана в три разных label(например label1, label2, label3), которые есть на главной форме, а после нажатия на кнопку, была следующая строка, так же записана в три разных label, с заменой предыдущего текста.
Текстура текстового файла:
"Текст1;Текст2;Текст3;
 Текст11;Текст12;Текст13;
 ... "
Помогите, пожалуйста, разобраться в этом.
Записан
Bepec
Гость
« Ответ #1 : Сентябрь 30, 2016, 19:48 »

Открываете файл - QFile.
Читаете строки в QStringList.
При каждом нажатии кнопочки прибавляете единицу к переменной индекса.
Разбиваете строку на подстроки используя разделитель. QStringList tempList = listMyString[index].split(";");  и получаете три строки.
Делаете ui.label1->setText(tempList[1]); и так далее. Финита.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #2 : Сентябрь 30, 2016, 20:07 »

При каждом нажатии кнопочки прибавляете единицу к переменной индекса.

Или у списка вызываете метод takeFirst(), чтобы получить вытащить первый элемент списка, после чего список уменьшится
Записан

Kensant
Гость
« Ответ #3 : Октябрь 01, 2016, 07:51 »

Можно кусочек когда, как пример?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #4 : Октябрь 01, 2016, 09:28 »

Можно кусочек когда, как пример?

Считывание построчно из файла в список (для вашего примера список будет в полях класса):
Код
C++ (Qt)
 
   QFile file("txt.txt");
   if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
       qDebug() << file.errorString();
       return 1;
   }
 
   QStringList lines;
 
   QTextStream in(&file);
   while (!in.atEnd()) {
       QString line = in.readLine();
       lines.append(line);
   }

А теперь получение первого элемента из списка и разделение его по символу ";":
Код
C++ (Qt)
QStringList parts = lines.takeFirst().split(";");

Перед вызывом takeFirst проверяйте, что lines не пустой.
Записан

Kensant
Гость
« Ответ #5 : Октябрь 01, 2016, 10:34 »

А как это раскидать по 3 разным лейбам?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Октябрь 01, 2016, 10:37 »

А как это раскидать по 3 разным лейбам?
Вот бывают такие посты от которых прямо хочется удавиться и никогда не посещать такой форум  Плачущий
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #7 : Октябрь 01, 2016, 11:23 »

Вот бывают такие посты от которых прямо хочется удавиться и никогда не посещать такой форум  Плачущий
Наступила осень - началась учеба. Улыбающийся
Первые лабораторки... Улыбающийся
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #8 : Октябрь 01, 2016, 21:18 »

А как это раскидать по 3 разным лейбам?

split возвращает список строк -- QStringList
Чтобы быть уверенным, выведите его, например через qDebug: qDebug() << list; // Для использования qDebug нужно подключить через #include <QDebug>

У списка берете по индексам значения и для каждого лейбла вставляете текст (вызываете функцию setText)
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.17 секунд. Запросов: 23.