Подсказки на компьютерную тематику

Можно подсмотреть, если забыли…

Как посмотреть пример работающего кода на C++ в Qt для создания файла, внесения и извлечения данных

Работающий код на C++ в Qt для создания текстового файла, внесения и извлечения данных из него

Содержимое визуальной формы из файла mainwindow.ui

    В файле mainwindow.ui путем перетаскивания надо добавить необходимые элементы, используемые в программе – виджеты (widget):

  • widget class=”QLineEdit” name=”lineEdit”
  • widget class=”QPushButton” name=”pushButton”
  • widget class=”QPushButton” name=”pushButton_2″
  • widget class=”QTextEdit” name=”textEdit”
  • widget class=”QPushButton” name=”pushButton_3″
  • widget class=”QPushButton” name=”pushButton_4″

Содержимое заголовочного файла mainwindow.h

В файле mainwindow.h в разделе private slots: прописываем функции для создания файла, а также внесения и получения его содержимого

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();

private:
Ui::MainWindow *ui;

private slots:
void createFile();// это созданный нами слот для проверки существования файла fortext.text и его создания при необходимости после нажатия кнопки QPushButton
void addText(); // это созданный нами слот для внесения текста из поля QLineEdit в какой-либо текстовый файл после нажатия кнопки QPushButton
void retrievetext();//это созданный нами слот для вывода текста из фала после нажатия кнопки QPushButton
void plusaddtext();// это созданный нами слот для добавления текста из поля QLineEdit в какой-либо текстовый файл после нажатия кнопки QPushButton
};
#endif // MAINWINDOW_H

В файле mainwindow.cpp нужно создать необходимые функции и добавить необходимые классы для работы с объектами. В итоге он должен выглядеть как-то так:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QApplication>//подключает класс для работы с QApplication, добавляется обязательно !!!

#include <QLineEdit> //подключает класс для работы с полем для ввода текста, добавляется при необходимости!
#include <QPushButton> //подключает класс для работы с кнопками, добавляется при необходимости!
#include <QLabel> //подключает класс для работы с полем для показа какой-либо информации, добавляется при необходимости!
#include <QFile> //подключает класс для работы с файлами, добавляется при необходимости!
#include <QDebug>//подключает класс для работы с выводом результата в консоль, добавляется при необходимости!

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(createFile())); //для создания файла при необходимости
connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(addText())); //для ввода текста в файл
connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(retrievetext())); //для вывода текста из файла
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::createFile()
{
//блок создания файла
//проверяем существует ли файл fortext.text, если существует покажем в элементе label_2 текст Файл существует, если нет, то Файл НЕ существует
if(QFile::exists("fortext.txt"))
{
ui->label->setText("Файл существует");
}
else{
ui->label->setText("Файл НЕ существует");
QFile file("fortext.txt");//создаем файл fortext.txt, но он не создан
file.open(QIODevice::WriteOnly);//создаем файл fortext.txt, после второго нажатия кнопки вроде создался, но не понятно в каком месте
/*/home/mishanyya/build-addinfoinfile-Desktop_Qt_5_14_2_GCC_64bit-Debug/fortext.text он создался в папке с исполняемым файлом!*/
}
}

void MainWindow::addText(){
//блок внесения текста в файл
if(QFile::exists("fortext.txt"))
{
QFile file("fortext.txt");//указываем файл fortext.txt
file.open(QIODevice::WriteOnly);//открываем файл fortext.txt, который расположен по умолчанию по указанному адресу
/*/home/mishanyya/build-addinfoinfile-Desktop_Qt_5_14_2_GCC_64bit-Debug/fortext.text он создался в папке с исполняемым файлом!*/
//получаем содержимое поля QLineEdit
file.write(ui->lineEdit->text().toUtf8().data()); // записываем значение из lineEdit
file.close();//закрываем файл
}
else{
ui->label->setText("Файл НЕ существует");
}
}

void MainWindow::retrievetext()
{
//блок получения информации из файла и вывода ее в поле
//проверяем существует ли файл fortext.text, если существует покажем в элементе label_2 текст Файл существует, если нет, то Файл НЕ существует
if(QFile::exists("fortext.txt"))
{
QFile file("fortext.txt");//создаем файл fortext.txt, но он не создан
file.open(QIODevice::ReadOnly);//открываем файл
ui->textEdit->setText(file.readAll());//выводим все содержимое файла
file.close();//закрываем файл
}
else{
ui->textEdit->setText("Файл НЕ существует");
}
}

Как посмотреть пример работающего кода на C++ в Qt для создания файла, внесения и извлечения данных

Работающий код на C++ в Qt для создания текстового файла, внесения и извлечения данных из него

Содержимое визуальной формы из файла mainwindow.ui

    В файле mainwindow.ui путем перетаскивания надо добавить необходимые элементы, используемые в программе – виджеты (widget):

  • widget class=”QLineEdit” name=”lineEdit”
  • widget class=”QPushButton” name=”pushButton”
  • widget class=”QPushButton” name=”pushButton_2″
  • widget class=”QTextEdit” name=”textEdit”
  • widget class=”QPushButton” name=”pushButton_3″
  • widget class=”QPushButton” name=”pushButton_4″

Содержимое заголовочного файла mainwindow.h

В файле mainwindow.h в разделе private slots: прописываем функции для создания файла, а также внесения и получения его содержимого

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();

private:
Ui::MainWindow *ui;

private slots:
void createFile();// это созданный нами слот для проверки существования файла fortext.text и его создания при необходимости после нажатия кнопки QPushButton
void addText(); // это созданный нами слот для внесения текста из поля QLineEdit в какой-либо текстовый файл после нажатия кнопки QPushButton
void retrievetext();//это созданный нами слот для вывода текста из фала после нажатия кнопки QPushButton
void plusaddtext();// это созданный нами слот для добавления текста из поля QLineEdit в какой-либо текстовый файл после нажатия кнопки QPushButton
};
#endif // MAINWINDOW_H

В файле mainwindow.cpp нужно создать необходимые функции и добавить необходимые классы для работы с объектами. В итоге он должен выглядеть как-то так:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QApplication>//подключает класс для работы с QApplication, добавляется обязательно !!!

#include <QLineEdit> //подключает класс для работы с полем для ввода текста, добавляется при необходимости!
#include <QPushButton> //подключает класс для работы с кнопками, добавляется при необходимости!
#include <QLabel> //подключает класс для работы с полем для показа какой-либо информации, добавляется при необходимости!
#include <QFile> //подключает класс для работы с файлами, добавляется при необходимости!
#include <QDebug>//подключает класс для работы с выводом результата в консоль, добавляется при необходимости!

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(createFile())); //для создания файла при необходимости
connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(addText())); //для ввода текста в файл
connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(retrievetext())); //для вывода текста из файла
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::createFile()
{
//блок создания файла
//проверяем существует ли файл fortext.text, если существует покажем в элементе label_2 текст Файл существует, если нет, то Файл НЕ существует
if(QFile::exists("fortext.txt"))
{
ui->label->setText("Файл существует");
}
else{
ui->label->setText("Файл НЕ существует");
QFile file("fortext.txt");//создаем файл fortext.txt, но он не создан
file.open(QIODevice::WriteOnly);//создаем файл fortext.txt, после второго нажатия кнопки вроде создался, но не понятно в каком месте
/*/home/mishanyya/build-addinfoinfile-Desktop_Qt_5_14_2_GCC_64bit-Debug/fortext.text он создался в папке с исполняемым файлом!*/
}
}

void MainWindow::addText(){
//блок внесения текста в файл
if(QFile::exists("fortext.txt"))
{
QFile file("fortext.txt");//указываем файл fortext.txt
file.open(QIODevice::WriteOnly);//открываем файл fortext.txt, который расположен по умолчанию по указанному адресу
/*/home/mishanyya/build-addinfoinfile-Desktop_Qt_5_14_2_GCC_64bit-Debug/fortext.text он создался в папке с исполняемым файлом!*/
//получаем содержимое поля QLineEdit
file.write(ui->lineEdit->text().toUtf8().data()); // записываем значение из lineEdit
file.close();//закрываем файл
}
else{
ui->label->setText("Файл НЕ существует");
}
}

void MainWindow::retrievetext()
{
//блок получения информации из файла и вывода ее в поле
//проверяем существует ли файл fortext.text, если существует покажем в элементе label_2 текст Файл существует, если нет, то Файл НЕ существует
if(QFile::exists("fortext.txt"))
{
QFile file("fortext.txt");//создаем файл fortext.txt, но он не создан
file.open(QIODevice::ReadOnly);//открываем файл
ui->textEdit->setText(file.readAll());//выводим все содержимое файла
file.close();//закрываем файл
}
else{
ui->textEdit->setText("Файл НЕ существует");
}
}