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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вывод QString на форму  (Прочитано 8356 раз)
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());
        }


Подскажите пожалуйста, что я неправильно делаю? Метка не изменяется и хранит свой первоначальный текст.
« Последнее редактирование: Декабрь 03, 2012, 15:47 от qwyllum » Записан
mutineer
Гость
« Ответ #1 : Декабрь 03, 2012, 15:47 »


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

Это ты откуда взял? Чем тебя не устраивает этот метод:
Код:
void	QLabel::setText ( const QString & )
?
Записан
Bepec
Гость
« Ответ #2 : Декабрь 03, 2012, 15:47 »

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

PS платные консультации чоли ввести Веселый
Записан
qwyllum
Гость
« Ответ #3 : Декабрь 03, 2012, 16:02 »

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

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

еще последний маааленький вопрос - а если мне нужно выводить строку с определенным содержанием? В с++ это решилось бы функцией strstr, которая бы возвращала 1 в случае присутствия подстроки.
Записан
mutineer
Гость
« Ответ #4 : Декабрь 03, 2012, 16:41 »

http://doc.crossplatform.ru/qt/4.7.x/qstring.html
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Декабрь 03, 2012, 19:01 »

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

Юра.
Bepec
Гость
« Ответ #6 : Декабрь 03, 2012, 19:18 »

Ну зачем вы так его, головой об стенку?
strstr для C++ строк, если я помню.
Вы предлагаете ему преобразовывать QString в string и использовать стандартные операторы? а смысл?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Декабрь 03, 2012, 19:26 »

Ф-ция strstr не имеет никакого отношения к ++. И возвращает она совсем не 1 а const char * который может быть нулевым или нет. И никакая она не оператор.

Совсем уж заврались  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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