Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 17
1

Записать в текстовой файл текст из TextEdit, и некоторых других элементов

11.12.2016, 18:54. Показов 3518. Ответов 30

Author24 — интернет-сервис помощи студентам
Очень прошу помощи.

Необходимо записать в текстовой файл текст из TextEdit, значение QSpinBox, Название выбранного элемента из QComboBox

Пока пытался только TextEdit записать, но возникла проблема с записью с ошибкой нахождения tEdit ("class Ui:: Dialog has no member named tEdit"). tEdit это TextEdit созданная не конструктором. По заданию нельзя пользоваться конструктором. Ссылаюсь на ui т.к. там прописывал его. Функция записи в Wrf.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "dialog.h"
#include "ui_dialog.h"
#include <QSpinBox>
#include <QTextEdit>
#include <QHBoxLayout>
#include <QComboBox>
#include <QPushButton>
#include <QFile>
#include <QIODevice>
#include <QTextStream>
 
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    setWindowTitle("Анкета");
    QSpinBox *sBox = new QSpinBox;
    QTextEdit *tEdit = new QTextEdit;
    QHBoxLayout *Hlay = new QHBoxLayout;
    QPushButton *But = new QPushButton;
    QComboBox *qBox = new QComboBox;
    qBox->insertItem(1, QString("Элемент 1"));
    qBox->insertItem(2, QString("Элемент 2"));
    qBox->insertItem(3, QString("Элемент 3"));
    But->setText("Сохранить");
    Hlay->addWidget(sBox);
    Hlay->addWidget(tEdit);
    Hlay->addWidget(But);
    Hlay->addWidget(qBox);
    setLayout(Hlay);
    ui->setupUi(this);
    QObject::connect(But,SIGNAL(clicked()),this,SLOT(Wrf()));
}
 
void Dialog::Wrf()
{
    QFile file("file.txt");
    file.open(QIODevice::WriteOnly);
    QTextStream out(&file);
    out << ui->tEdit->toPlainText();
    file.close();
}
 
 
Dialog::~Dialog()
{
    delete ui;
}
Буду также рад если скажите как мне записать значение переменной SpinBox (ну или обратится к ее значению) и названиям ComboBox.

(пересоздал с раздела C++, не туда задал вопрос, простите)

 Комментарий модератора 
Код С++\Qt обозначается с помощью тега CPPQT.
Правила именования тем и оформления сообщений в разделе Qt
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2016, 18:54
Ответы с готовыми решениями:

Как взять текст из textEdit и записать его в массив?
Помогите пожалуйста. Только начал осваивать Qt, ни как не могу по нажатию кнопки записать вводимый...

Файл: Можно ли записать цифры типизированного файла в текстовой файл?
Можно ли записать цифры типизированного файла в текстовой файл Когда записываю цифры даёт не...

Файл: Из текстового файла найти max и min элемент и записать в другой текстовой файл, не используя массив
Из текстового файла найти max и min элемент и записать в другой текстовой файл, не используя массив

Как лучше записать вариантный массив в текстовой (.txt) файл
Имеется массив A:variant MyArray := VarArrayCreate(, VarDouble); Как писать тоже знаю, примерно...

30
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.12.2016, 19:54 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Knogg Посмотреть сообщение
м, все необходимые параметры заданы (их инициализация, для qbox значения 3х и надписи их, имя кнопки, компоновка)
Заданы, и заданы (это твоё дело, что ты там будешь задавать, или не задавать).
Цитата Сообщение от nd2 Посмотреть сообщение
Эти указатели у тебя в классе должны быть, а в конструкторе класса - инициализироваться.
0
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 17
11.12.2016, 19:54  [ТС] 22
Я пересоздал с с++ на qt потому что ошибся разделом, не увидел сразу qt
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.12.2016, 19:56 23
Цитата Сообщение от Knogg Посмотреть сообщение
Просто если исключить запись, все работает
Тебе нужно чтобы работало, или чтобы правильно было сделано?
0
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 17
11.12.2016, 20:05  [ТС] 24
Так-с, запутался. Полностью обрисую ситуацию. Имеется Dialog в котором я прописываю в Dialog:: Dialog(QWidget *parent) : QDialog(parent), ui(new Ui:: Dialog) инициализацию компонентов и их параметры. А также связь для кнопки Сохранить.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    QTextEdit *tEdit = new QTextEdit;
    QSpinBox *sBox = new QSpinBox;
    QHBoxLayout *Hlay = new QHBoxLayout;
    QPushButton *But = new QPushButton;
    QComboBox *qBox = new QComboBox;
    setWindowTitle("Анкета");
    qBox->insertItem(1, QString("Элемент 1"));
    qBox->insertItem(2, QString("Элемент 2"));
    qBox->insertItem(3, QString("Элемент 3"));
    But->setText("Сохранить");
    Hlay->addWidget(sBox);
    Hlay->addWidget(tEdit);
    Hlay->addWidget(But);
    Hlay->addWidget(qBox);
    setLayout(Hlay);
    ui->setupUi(this);
    QObject::connect(But,SIGNAL(clicked()),this,SLOT(Wrf()));
}
Прописал слот в dialog.h

C++ (Qt)
1
2
public slots:
    void Wrf();
После этого создал в dialog.cpp код где функцию кнопки обрисуется. В данном случае сохранения содержимого TextEdit (tEdit)

C++ (Qt)
1
2
3
4
5
6
7
8
void Dialog::Wrf()
{
    QFile file("file.txt");
    file.open(QIODevice::WriteOnly);
    QTextStream out(&file);
    out << tEdit->toPlainText();
    file.close();
}
Тогда начинает ругаться что не знает никакого tEdit, ок, потому что наверное в своем конструкторе Dialog:: Dialog(QWidget *parent) : QDialog(parent), ui(new Ui:: Dialog), я вынес его, за пределы, т.е.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
QTextEdit *tEdit = new QTextEdit;
QSpinBox *sBox = new QSpinBox;
QHBoxLayout *Hlay = new QHBoxLayout;
QPushButton *But = new QPushButton;
QComboBox *qBox = new QComboBox;
 
setLayout(Hlay);
 
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    setWindowTitle("Анкета");
    qBox->insertItem(1, QString("Элемент 1"));
    qBox->insertItem(2, QString("Элемент 2"));
    qBox->insertItem(3, QString("Элемент 3"));
    But->setText("Сохранить");
    Hlay->addWidget(sBox);
    Hlay->addWidget(tEdit);
    Hlay->addWidget(But);
    Hlay->addWidget(qBox);
    ui->setupUi(this);
    QObject::connect(But,SIGNAL(clicked()),this,SLOT(Wrf()));
}
параметры их вынести нельзя, не узнает названия, вроде при компиляции ошибки нет то тогда выходит что QApplication позже инициализируется чем QWidget, и вылетает
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.12.2016, 20:15 25
Цитата Сообщение от Knogg Посмотреть сообщение
Тогда начинает ругаться что не знает никакого tEdit, ок, потому что наверное в своем конструкторе Dialog:: Dialog(QWidget *parent) : QDialog(parent), ui(new Ui:: Dialog), я вынес его, за пределы, т.е.
Тебе сколько раз одно и то же нужно написать?
Цитата Сообщение от nd2 Посмотреть сообщение
Эти указатели у тебя в классе должны быть, а в конструкторе класса - инициализироваться.
0
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 17
11.12.2016, 20:24  [ТС] 26
Я не понимаю куда указатели ставить и в каком формате.

C++ (Qt)
1
2
3
4
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.12.2016, 20:33 27
Цитата Сообщение от Knogg Посмотреть сообщение
Я не понимаю куда указатели ставить и в каком формате.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#ifndef DIALOG_H
#define DIALOG_H
 
#include <QDialog>
 
namespace Ui {
class Dialog;
}
 
class Dialog : public QDialog
{
    Q_OBJECT
 
public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
 
public slots:
    void Wrf();
 
private:
    Ui::Dialog *ui;
 
    QTextEdit *tEdit;
    QSpinBox *sBox;
    QHBoxLayout *Hlay;
    QPushButton *But;
    QComboBox *qBox;
};
 
#endif // DIALOG_H
Так понятно? А в конструкторе класса инициализируй их через new:
C++ (Qt)
1
2
3
4
5
           sBox = new QSpinBox;
           tEdit = new QTextEdit;
           Hlay = new QHBoxLayout;
           But = new QPushButton;
           qBox = new QComboBox;
1
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 17
11.12.2016, 20:36  [ТС] 28
ух, не знал что в заголовочный. Спасибо что ответил и терпел
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.12.2016, 20:39 29
И добавь в заголовочный forward-декларации (class QTextEdit; и пр.), чтобы компилятор знал, что есть QTextEdit и пр.
0
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 17
11.12.2016, 20:42  [ТС] 30
Это добавил

Добавлено через 39 секунд
Правда сделал я инклудом
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.12.2016, 20:59 31
Цитата Сообщение от Knogg Посмотреть сообщение
Правда сделал я инклудом
Если только указатели, то инклуды необязательны, достаточно forward-деклараций.
0
11.12.2016, 20:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2016, 20:59
Помогаю со студенческими работами здесь

Скопировать имя файла и записать в новый текстовой файл без расширения
Здравствуйте знатоки, помогите пожалуйста с кодом для BAT и возможно ли такое батником. Есть...

Из текстового файла считать вторую строку и последнюю. Записать их в другой текстовой файл
Из текстового файла считать вторую строку и последнюю. Записать их в другой текстовой файл. Прошу...

Создать файл и записать в него текст. Имя файла и текст вводятся с клавиатуры
Здравствуйте. Задача примерно такая: Создать файл и записать туда текст. Когда создаем файл пишем...

Записать в файл совпадающие компоненты двух других файлов
Даны два символьных файла. Записать в новый файл все совпадающие компоненты исходных файлов....

Записать в файл поочередно по две строки из двух других файлов
В редакторе создайте 2 текстовых файла, внесите в первый файл 10 строк произвольноготекста и во...

Ввести число с клавиатуры, потом записать это число в текстовой файл
Написать программу в которой надо ввести число с клавиатуры, потом записать это число в текстовой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru