crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> сохранение текста из QTextEdit в файл
deex
  опции профиля:
сообщение 2.1.2010, 20:20
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 45
Регистрация: 12.3.2009
Пользователь №: 608

Спасибо сказали: 0 раз(а)




Репутация:   0  


QTextEdit *editArea = new QTextEdit;

QFile file(fileName);
QTextStream out(&file);

out << editArea->toPlainText();



вот, сохраняю из текстового поля в файл
но сохраняет до первого пробела

если там "строка1 строка2", то в файл попадет только "строка1"

почему?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
panter_dsd
  опции профиля:
сообщение 3.1.2010, 11:39
Сообщение #2


Жаждущий знаний
***

Группа: Участник
Сообщений: 254
Регистрация: 1.1.2009
Из: Санкт-Петербург
Пользователь №: 474

Спасибо сказали: 32 раз(а)




Репутация:   3  


Файл закрываешь? Попробуй после out << editArea->toPlainText(); сделать file.flush().
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
deex
  опции профиля:
сообщение 3.1.2010, 17:22
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 45
Регистрация: 12.3.2009
Пользователь №: 608

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(panter_dsd @ 3.1.2010, 15:39) *
Файл закрываешь? Попробуй после out << editArea->toPlainText(); сделать file.flush().


сделал file.flush(), file.close()
не помогло

проблема в том, что запись в файл обрывается при достижении первого символа пробела
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.1.2010, 18:55
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


deex, выложи простейший тестовый проект (zip-архив). Не должно быть такого, что ты описываешь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
deex
  опции профиля:
сообщение 3.1.2010, 20:58
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 45
Регистрация: 12.3.2009
Пользователь №: 608

Спасибо сказали: 0 раз(а)




Репутация:   0  


вот проект

http://www.sendspace.com/file/strscg

строка 77, функция void Pad::saveAs()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.1.2010, 22:00
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


У меня нет никакой проблемы.
Скомпилировал, запустил, написал:
qwerty uiop
нажал Save as
открыл файл проверил, всё что написал сохранилось. (Файл: Прикрепленный файл  test_1.deex.zip ( 10 байт ) Кол-во скачиваний: 567
)

Дописал ещё строку, получилось
qwery uiop
йцукен гшщз

нажал Save as
открыл файл проверил, всё что написал сохранилось. (Файл: Прикрепленный файл  test_2.deex.zip ( 22 байт ) Кол-во скачиваний: 532
)


П.С. удали фиктивное расширение .zip

П.П.С. Windows 2000 SP4: MinGW32(GCC-3.4.5) - Qt 4.4.3

А вот при чтении косяк:
        QTextStream in(&file);
        QString body;
        in >> body;

        editArea->setText(body);
смотри Асистент, пример как читать из потока.
При записи в поток, записывается всё содержимое переменной, т.е. весь текст QTextEdita.

Описание оператора ввода из потока:
Цитата
QTextStream & QTextStream::operator>> ( QString & str )
Reads a word from the stream and stores it in str, then returns a reference to the stream. Words are separated by whitespace (i.e., all characters for which QChar::isSpace() returns true).


Ещё есть такая строчка:
Цитата
file.write(editArea->toPlainText().toAscii());
Выделенную функцию лучше не применять. Иначе на русском не напишешь, да и применена она почему-то только в SaveTo, а в SaveAs её нет, т.е. файл будет сохранятся по разному.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
deex
  опции профиля:
сообщение 4.1.2010, 11:17
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 45
Регистрация: 12.3.2009
Пользователь №: 608

Спасибо сказали: 0 раз(а)




Репутация:   0  


большое спасибо!

Цитата
file.write(editArea->toPlainText().toAscii());
Выделенную функцию лучше не применять.

это эксперименты, я понимаю что .toUtf8() лучше

Цитата
да и применена она почему-то только в SaveTo, а в SaveAs её нет

тоже эксперименты) пока добиваюсь чтобы хоть что-то работало как надо

странно что нельзя редактировать своё сообщение на форуме

в общем теперь читаю так

QTextStream in(&file);
QString line = in.readAll();

и .toUtf8() убрал, а то русский текст сохраняется коряво
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 4.1.2010, 15:19
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(deex @ 4.1.2010, 14:17) *
я понимаю что .toUtf8() лучше
лучше вообще текст таким образом не модифицировать. Вот как пользовался потоком, так и продолжай.
Если нужно использовать перекодирование, то смотри в сторону установки Коддера/декоддера для потока:
QTextStream::setCodec

Цитата(deex @ 4.1.2010, 14:17) *
странно что нельзя редактировать своё сообщение на форуме
20 сообщений накопится, сможешь
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 10:06