Russian Qt Forum

Qt => Общие вопросы => Тема начата: G-virus от Декабрь 19, 2009, 21:48



Название: QFile чтение i-ой строки из файла.
Отправлено: G-virus от Декабрь 19, 2009, 21:48
Всем привет! Вопрос такой. Как читать из текстового файла строку с определенным номером. например readLine(20) означает что должен считать двадцатую строку из текстового файла. И еще вопрос. Имеется объект  Combo Box. Как заполнять каждую строку этого объекта без цикла, читая целиком текстовый файл, допустим в файле 20 строк, и при считывании нужно первую строку файла засунуть в первый Item этого объекта и т.д.
Заранее Спасибо! :)


Название: Re: QFile чтение i-ой строки из файла.
Отправлено: Пантер от Декабрь 19, 2009, 21:55
Этот вопрос 100% уже поднимался на форуме, поищи.
Нельзя прочитать 20-ю строчку файла, не прочитав первые 19, так что придется делать так:
Код
C++ (Qt)
for (int i = 0; i < 20; i++)
 stream.readLine();
 
QString str = stream.readLine();
 


Название: Re: QFile чтение i-ой строки из файла.
Отправлено: G-virus от Декабрь 19, 2009, 21:57
Этот вопрос 100% уже поднимался на форуме, поищи.

Может плохо искал, но ненашел( А как быть с Combo Box?


Название: Re: QFile чтение i-ой строки из файла.
Отправлено: Пантер от Декабрь 19, 2009, 22:00
Чем тебе не нравится заполнение в цикле?


Название: Re: QFile чтение i-ой строки из файла.
Отправлено: G-virus от Декабрь 19, 2009, 22:02
Чем тебе не нравится заполнение в цикле?

Ну я думал может бывают более высокоуровневые функции. Ну и да ладно =) спасибо


Название: Re: QFile чтение i-ой строки из файла.
Отправлено: Пантер от Декабрь 19, 2009, 22:05
Так и нужно, в цикле считываешь строку и закидываешь ее в комбобокс.
Можно в цикле считывать строки в QStringList, а потом сразу добавить весь QStringList в комбобокс, но это то же самое.
Кстати, что-то у меня тоже не получилось поиском найти тему, хотя точно была. Бывает. :)


Название: Re: QFile чтение i-ой строки из файла.
Отправлено: G-virus от Декабрь 19, 2009, 22:12
а какая функция у QFile пропустить строку? :) например чтобы считать 20 строк и занести их в в комбо бокс код такой должен быть:
Код
C++ (Qt)
if (file.isReadable())
   {
          while (!file.atEnd()){
           ui->CommandList->setItemText(count, file.readLine());
         file.пропустить_строку                                                // Ну или следующая_строка
           count++;
       }
       file.close();
 


Название: Re: QFile чтение i-ой строки из файла.
Отправлено: QCasper от Декабрь 19, 2009, 22:23
combo->addItems(QString(file.readAll()).split("\n")); - можно так попробовать


Название: Re: QFile чтение i-ой строки из файла.
Отправлено: G-virus от Декабрь 19, 2009, 22:30
О! Спасибо! Заработало!  :)


Название: Re: QFile чтение i-ой строки из файла.
Отправлено: kenso от Декабрь 24, 2009, 19:06
а если файл не текстовый, как прочитать i-ую строку?


Название: Re: QFile чтение i-ой строки из файла.
Отправлено: BRE от Декабрь 24, 2009, 19:08
а если файл не текстовый, как прочитать i-ую строку?
А что называется строкой в не тестовом файле?


Название: Re: QFile чтение i-ой строки из файла.
Отправлено: kenso от Декабрь 24, 2009, 20:09
Цитировать
while (!file.atEnd())
        {
            QByteArray line = file.readLine();
            qDebug()<<line;
        }