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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QTextEdit сохранить текст в файл .txt  (Прочитано 27964 раз)
bybyyura
Гость
« : Июль 29, 2010, 23:12 »

Привет! как сохранить текст введенный в QTextEdit в текстовый файл? С QT дел не имел, но захотелось начать программировать под симбиан.
Покажите код по сабжу, пожалуйста с объяснением.

ps
Qt Creator 2.0.0
Основан на Qt 4.7.0 (32-х битной)
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Июль 29, 2010, 23:41 »

Примерно так:

QFile file("out.txt");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
         return;

QTextStream out(&file);//поток для записи текста
out << textEdit->toHtml(); или toPlainText() в зависимости от того нужна ли разметка или нет
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
bybyyura
Гость
« Ответ #2 : Июль 30, 2010, 09:39 »

 Грустный неполучается.
вот скинул на форму QTextEdit и Push Button. Как осуществить событие при нажатие на Push Button, чтобы текст сохранился из QTextEdit в файл. По верхнему примеру сплошные ошибки, видно где-то нужно объявлять процедуры?

Я полный нуб  Злой
Записан
crossly
Гость
« Ответ #3 : Июль 30, 2010, 10:14 »

тогда может стоить начать с документации ?? Бланшет, Шлее почитать...
Записан
bybyyura
Гость
« Ответ #4 : Июль 30, 2010, 10:36 »

но было бы лучше, если кто-нибудь объяснил
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #5 : Июль 30, 2010, 11:16 »

Код:
но было бы лучше, если кто-нибудь объяснил
Чем отличается текст книги от текста, который напишет человек с форума?

Создаешь слот:
Код:
private slots:
void buttonClicked();

Соединяешь:
Код:
connect(button,SIGNAL(clicked()),this,SLOT(buttonClicked()));

В слоте пишешь реализацию(что я написал в пред. посте)
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
bybyyura
Гость
« Ответ #6 : Июль 30, 2010, 12:00 »

спасибо, получилось.
Записан
SABROG
Гость
« Ответ #7 : Июль 30, 2010, 12:26 »

Код
C++ (Qt)
void Widget::on_pushButton_clicked()
{
   QTextDocumentWriter writer("filename.txt", "plaintext");
   writer.write(ui->textEdit->document());
}
 
Записан
bybyyura
Гость
« Ответ #8 : Июль 30, 2010, 12:49 »

как теперь считать из этого файла при запуске программы?

нашел код:
Код:
QStringList lines;
        QFile file( "C:/1.txt" );
        if ( file.open( QFile::ReadOnly ) ) {
            QTextStream stream( &file );
            QString line;

            while ( !stream.atEnd() ) {
                line = stream.readLine(); // line of text excluding '\n'
                lines += line;
                         }
            file.close();
        }
где нужно подправить чтобы текст отобразился в QtextEdit?
Записан
SABROG
Гость
« Ответ #9 : Июль 30, 2010, 13:20 »

Код
C++ (Qt)
   QFile file("filename.txt");
   if (file.open(QIODevice::ReadOnly))
       ui->textEdit->setPlainText(QString::fromUtf8(file.readAll()));
 
Записан
bybyyura
Гость
« Ответ #10 : Июль 30, 2010, 13:32 »

спс, все работает
Записан
SABROG
Гость
« Ответ #11 : Июль 30, 2010, 13:36 »

Еще один вариант:

Код
C++ (Qt)
   QFile file("filename.txt");
 
   if (!file.open(QIODevice::ReadOnly))
       return;
 
   while (!file.atEnd()) {
       ui->textEdit->textCursor().insertText(QString::fromUtf8(file.readLine()));
   }
 
Записан
bybyyura
Гость
« Ответ #12 : Июль 30, 2010, 13:48 »

назрел вопрос, как удалить txt файл (либо очистить)?
Вроде нашел
Код:
QFile::remove(C:/1.txt");
« Последнее редактирование: Июль 30, 2010, 14:20 от bybyyura » Записан
Геннадий Носов
Гость
« Ответ #13 : Март 03, 2016, 20:29 »

Здравствуйте.

Прошу прощения, за практически полное повторение вопроса, который уже был задан выше...
Собственно, проблема такая: есть виджет с полем QTextEdit и кнопкой QPushButton. Нужно ввести что-нибудь в текстовом поле и сохранить в файл по нажатию кнопки.
Изначально это был пример из Шлее по записи в текстовый файл. Я решил его немного развить, а то ведь мало счастья если правильно работает программа, один в один скопированная из книги.

Я попытался создать класс, содержащий текстовое поле, кнопку и слот с кодом для записи в файл. Если в слот не передаётся никаких значений, а текст создаётся прямо там - всё сохраняется. Если я пытаюсь передать в слот ссылку на объект QTextEdit созданный в виджите - программа не работает. (Этот вариант в тексте закомментирован)

Подскажите пожалуйста, что не так?

main:
Код:
#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

widget.h:
Код:
#ifndef WIDGET_H
#define WIDGET_H

#include <QtWidgets>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();

    QTextEdit * qtext;
    QPushButton * btn;
    QVBoxLayout * layout;


//public slots:
//    void SaveToFile(QTextEdit*qt);

public slots:
        void SaveToFile();
};

#endif // WIDGET_H
widget.cpp:
Код:
#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    QTextEdit * qtext = new QTextEdit;
    QPushButton * btn = new QPushButton("&Save");
    QVBoxLayout * layout = new QVBoxLayout;

    //QObject::connect(btn,SIGNAL(clicked()),this,SLOT(SaveToFile(qtext)));

    QObject::connect(btn,SIGNAL(clicked()),this,SLOT(SaveToFile()));

    layout->addWidget(qtext);
    layout->addWidget(btn);
    setLayout(layout);

}

Widget::~Widget()
{

}

// void Widget::SaveToFile(QTextEdit * qt)
//{
//    QTextDocumentWriter * writer = new QTextDocumentWriter;
//    writer->setFormat("odf");
//    writer->setFileName("C:/Users/Геннадий/Desktop/output.odf");
//    writer->write(qt->document());
//     qDebug()<<"it worck";
// }
  void Widget::SaveToFile()
 {   QTextEdit * qtext = new QTextEdit("Text to save");
     QTextDocumentWriter * writer = new QTextDocumentWriter;
     writer->setFormat("odf");
     writer->setFileName("C:/Users/Геннадий/Desktop/output.odf");
     writer->write(qtext->document());
      qDebug()<<"it worck";
  }
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #14 : Март 03, 2016, 21:46 »

А откуда слот узнает, что в него передается? Ведь у сигнала clicked () нет параметров. Следовательно, работать не будет.
Так что используйте второй вариант.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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