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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QTextEdit сохранить текст в файл .txt  (Прочитано 27977 раз)
Геннадий Носов
Гость
« Ответ #15 : Март 04, 2016, 20:16 »

А откуда слот узнает, что в него передается? Ведь у сигнала clicked () нет параметров. Следовательно, работать не будет.
Так что используйте второй вариант.
Дело в том, что я хочу вводить текст в процессе работы программы, и сохранять через кнопку. Во втором варианте сохраняется только то, что я заранее в слоте прописал.
Это делается элементарно, если я использую конструктор форм пользовательского интерфейса (который файлы .ui создаёт) - размещаю на форме кнопку и текстовую область, в соединении сигнал-слот пишу
Код:
QObject::connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(saveText()));
а в слоте
Код:
writer.write(ui->textEdit->document());
Но вот интересно, в изначальном варианте, без создания формы .ui как-то можно сохранение текста из QTextEdit в файл реализовать?
« Последнее редактирование: Март 04, 2016, 21:14 от Геннадий Носов » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #16 : Март 04, 2016, 20:43 »

Геннадий Носов, у вас очень странный код.

h:
Код
C++ (Qt)
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QWidget>
#include <QTextEdit>
#include <QTextStream>
#include <QPushButton>
 
class MainWindow : public QWidget
{
   Q_OBJECT
 
public:
   MainWindow(QWidget *parent = 0);
   ~MainWindow();
 
private:
   QTextEdit * textEdit;
 
   QPushButton * buttonOpen;
   QPushButton * buttonSave;
 
public slots:
   void open();
   void save();
};
 
#endif // MAINWINDOW_H
 

cpp:
Код
C++ (Qt)
#include "mainwindow.h"
 
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QMessageBox>
#include <QFileDialog>
#include <QTextStream>
 
 
MainWindow::MainWindow(QWidget *parent)
   : QWidget(parent)
{
   textEdit = new QTextEdit();
 
   buttonOpen = new QPushButton("Open");
   connect(buttonOpen, SIGNAL(clicked()), SLOT(open()));
 
   buttonSave = new QPushButton("Save");
   connect(buttonSave, SIGNAL(clicked()), SLOT(save()));
 
   QHBoxLayout * buttonsLayout = new QHBoxLayout();
   buttonsLayout->addWidget(buttonOpen);
   buttonsLayout->addWidget(buttonSave);
 
   QVBoxLayout * layout = new QVBoxLayout();
   layout->addLayout(buttonsLayout);
   layout->addWidget(textEdit);
 
   setLayout(layout);
}
 
MainWindow::~MainWindow()
{
 
}
 
void MainWindow::open() {
   const QString& fileName = QFileDialog::getOpenFileName(this);
   if (fileName.isEmpty()) {
       return;
   }
 
   QFile file(fileName);
   if (file.open(QIODevice::ReadOnly)) {
       QTextStream in(&file);
       textEdit->setText(in.readAll());
   } else {
       QMessageBox::warning(this, "Warn", file.errorString());
   }
}
 
void MainWindow::save() {
   const QString& fileName = QFileDialog::getSaveFileName(this);
   if (fileName.isEmpty()) {
       return;
   }
 
   QFile file(fileName);
   if (file.open(QIODevice::WriteOnly)) {
       QTextStream out(&file);
       out << textEdit->toHtml();
   } else {
       QMessageBox::warning(this, "Warn", file.errorString());
   }
}
 
Записан

Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


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


Просмотр профиля
« Ответ #17 : Март 04, 2016, 20:44 »

Сделайте qtext членом класса, и тогда он будет виден в слоте.
А уже в слоте доставайте текст и передавайте в метод сохранения.

*gil9red*, Вы меня опередили)
Записан

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 не волк, в лес не уйдёт
Геннадий Носов
Гость
« Ответ #18 : Март 04, 2016, 21:17 »

Геннадий Носов, у вас очень странный код

Спасибо)
Что до странного кода...
Наверное это по тому что в институте мы вообще Fortran проходили, а потом мне захотелось чтоб у программ был красивый интерфейс)

Спасибо, всё заработало, и я даже понял, в чём была ошибка)
Действительно, глупо было второй раз объявлять те же самые переменные уже в файле .cpp Непривычно просто, когда программа на несколько файлов разбита) В Fortrane мы так не делали)
« Последнее редактирование: Март 04, 2016, 21:42 от Геннадий Носов » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #19 : Март 04, 2016, 22:57 »

Геннадий Носов, у вас очень странный код

Спасибо)
Что до странного кода...
Наверное это по тому что в институте мы вообще Fortran проходили, а потом мне захотелось чтоб у программ был красивый интерфейс)

Спасибо, всё заработало, и я даже понял, в чём была ошибка)
Действительно, глупо было второй раз объявлять те же самые переменные уже в файле .cpp Непривычно просто, когда программа на несколько файлов разбита) В Fortrane мы так не делали)

Научитесь еще Улыбающийся
Записан

Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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