Russian Qt Forum

Qt => Вопросы новичков => Тема начата: qwyllum от Декабрь 03, 2012, 15:43



Название: Вывод QString на форму
Отправлено: qwyllum от Декабрь 03, 2012, 15:43
Нужно вывести строки из файла на форму.
Если я правильно понимаю, то QString это класс, поэтому нельзя просто вывести Qstring, т.к. Для текста меток подходит формат *char. Т.е. Нужно получить доступ к данным Qstring. Нашел в интернете реализацию, но не совсем уверен правильная ли она.
Попытался вывести присвоить хотя-бы строку метке этим кодом:

Код:
 QFile file("/proc/cpuinfo");
    file.open(QIODevice::ReadOnly | QIODevice::Text);
    QTextStream in(&file);
    QString str;
        while (!in.atEnd())
        {
            str =in.readLine();
            ui->label_7->setText(str.toAscii().data());
        }


Подскажите пожалуйста, что я неправильно делаю? Метка не изменяется и хранит свой первоначальный текст.


Название: Re: Вывод QString на форму
Отправлено: mutineer от Декабрь 03, 2012, 15:47

Если я правильно понимаю, то QString это класс, поэтому нельзя просто вывести Qstring, т.к. Для текста меток подходит формат *char.

Это ты откуда взял? Чем тебя не устраивает этот метод:
Код:
void	QLabel::setText ( const QString & )
?


Название: Re: Вывод QString на форму
Отправлено: Bepec от Декабрь 03, 2012, 15:47
1) QString это строка.
2) setText у Label принимает как ты думаешь что? Правильно, QString.
3) В какой кодировке у тебя файл я незнаю (никсы), но походу UTF-8, т.е. тебе вообще ничего преобразовывать ненадо.
4) Ты в цикле до конца файла берешь строку. Ставишь строку в метку, затирая предыдущую строку.
5) Как результат у тебя будет выведена только последняя строка.
6) сделай проще - записывай все данные в QString (в один класс). А потом когда весь файл читанёшь засовывай в label.

PS платные консультации чоли ввести :D


Название: Re: Вывод QString на форму
Отправлено: qwyllum от Декабрь 03, 2012, 16:02
1) QString это строка.
2) setText у Label принимает как ты думаешь что? Правильно, QString.
3) В какой кодировке у тебя файл я незнаю (никсы), но походу UTF-8, т.е. тебе вообще ничего преобразовывать ненадо.
4) Ты в цикле до конца файла берешь строку. Ставишь строку в метку, затирая предыдущую строку.
5) Как результат у тебя будет выведена только последняя строка.
6) сделай проще - записывай все данные в QString (в один класс). А потом когда весь файл читанёшь засовывай в label.

PS платные консультации чоли ввести :D
Оказалось все проще, чем я думаю :D спасибо большое)

еще последний маааленький вопрос - а если мне нужно выводить строку с определенным содержанием? В с++ это решилось бы функцией strstr, которая бы возвращала 1 в случае присутствия подстроки.


Название: Re: Вывод QString на форму
Отправлено: mutineer от Декабрь 03, 2012, 16:41
http://doc.crossplatform.ru/qt/4.7.x/qstring.html


Название: Re: Вывод QString на форму
Отправлено: lit-uriy от Декабрь 03, 2012, 19:01
>>В с++ это решилось бы функцией strstr, которая бы возвращала 1 в случае присутствия подстроки.
А ты не на С++ пишешь?


Название: Re: Вывод QString на форму
Отправлено: Bepec от Декабрь 03, 2012, 19:18
Ну зачем вы так его, головой об стенку?
strstr для C++ строк, если я помню.
Вы предлагаете ему преобразовывать QString в string и использовать стандартные операторы? а смысл?


Название: Re: Вывод QString на форму
Отправлено: Igors от Декабрь 03, 2012, 19:26
Ф-ция strstr не имеет никакого отношения к ++. И возвращает она совсем не 1 а const char * который может быть нулевым или нет. И никакая она не оператор.

Совсем уж заврались  :)