PDA

Просмотр полной версии : Qt - сохранение текста из QTextEdit в файл


Дикс
02.01.2010, 22:44
QTextEdit *editArea = new QTextEdit;

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

out << editArea->toPlainText();


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

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

почему?

razb
03.01.2010, 02:16
Потому что разделителем записи в поток является пробел
Word by word. QTextStream supports streaming into QStrings, QByteArrays and char* buffers. Words are delimited by space, and leading white space is automatically skipped.
используй манипуляторы что бы убрать такой разделитель как пробел.

Дикс
03.01.2010, 10:16
но ведь даже если я разобью строку по пробелам

QStringList list = str.split(" ");

а потом соберу в одну строку

QString str = list.join(" ");

что мне это даст?
удалить пробелы я не могу - т.к. текст останется без пробелов
отправлять их на вывод получается тоже нельзя

Дикс
03.01.2010, 10:21
если сохранять кусками, то тоже не получается

foreach (QString str, list)
out << str << " ";

дальше первого элемента запись не идет

\\ChaOs//
03.01.2010, 13:36
QFile file(fileName);
file.open(QIODevice::WriteOnly);
file.write(editArea.toPlainText().toUtf8());

не?

Дикс
03.01.2010, 18:30
самое странное что тоже нет!

допустим в файле записана 1

если изменить на 12222 - так и сохранит
если изменить на 12222 333 - то сохранит до пробела, т.е. только "12222"

flush() и close() для файла делал

\\ChaOs//
04.01.2010, 00:29
QFile file("file1.txt");
QFile file2("file2.txt");

file.open(QIODevice::WriteOnly);
file2.open(QIODevice::WriteOnly);

QTextStream out(&file2);

file.write(ui.textEdit->toPlainText().toUtf8());
out<<ui.textEdit->toPlainText();

file.close();
file2.close();

Хм, у меня все прекрасно работает.
Причем оба способа.
Проверял на

1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
123 321 123 321 123

Дикс
04.01.2010, 13:10
оказывается косяк был при чтении из файла

QTextStream in(&file);
QString body;
in >> body;

editArea->setText(body);

сделал так:

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

editArea->setText(line);


и все норм

eldar85
10.02.2010, 14:47
всем сдрасти) никак не могу справиться с такой проблемой, нужно картинку загрузить в формате .gif
делаю загрузку курлом в строку, потом записываю в файл, но файл получается какого то не правельного формата... что делать подскажите плиз...
вот код:

QString StringJPG;
StringJPG.toStdString() = curl->load(http://........gif)->exec();
QFile file("captcha.gif");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out << StringWithCaptcha;
file.close();