0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 60
1

Передать данные из одной формы в другую

18.11.2016, 05:13. Показов 2762. Ответов 1
Метки нет (Все метки)

Доброй ночи(у меня) и доброго времени суток всем.

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

Прилагаю полный исходный код.
main_page.h
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
#ifndef MAIN_PAGE_H
#define MAIN_PAGE_H
 
#include <QWidget>
#include "QLineEdit"
 
namespace Ui {
class main_page;
}
 
class main_page : public QWidget
{
    Q_OBJECT
 
public:
    explicit main_page(QWidget *parent = 0);
    ~main_page();
    void add_colrow();
 
private:
    Ui::main_page *ui;
    QVector<QLineEdit*> VLine;
    int row, column;
 
private slots:
void setters(int rows, int columns);
};
 
#endif // MAIN_PAGE_H


mainwindow.h
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
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
signals:
    void signalFromButton(int rows, int columns);    // Сигнал для передачи необходимого кол-ва создания по вертикали и горизонтали
 
private slots:
    void on_addForm_clicked();
 
private:
    Ui::MainWindow *ui;
};
 
#endif // MAINWINDOW_H


main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
#include "mainwindow.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
 
    return a.exec();
}


main_page.cpp
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
#include "main_page.h"
#include "ui_main_page.h"
 
main_page::main_page(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::main_page)
{
    ui->setupUi(this);
    setAttribute(Qt::WA_DeleteOnClose, true);
}
 
main_page::~main_page()
{
    delete ui;
}
 
main_page::setters(int rows, int columns)
{                        // Тут ошибка
    row = rows;
    column = columns;
}
 
void main_page::add_colrow()
{
    for(int i = 0; i < row; i++)
    {
    QLineEdit *edit = new QLineEdit(this);
    VLine.push_back(edit);
    ui->verticalLayout->addWidget(edit);
    }
}


mainwindow.cpp
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
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "main_page.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_addForm_clicked()
{
    int row, column;
    QString str1 = ui->lineEdit->text();
    QString str2 = ui->lineEdit_2->text();
    row = str1.toInt();
    column = str2.toInt();
    main_page *mp = new main_page(); // Вызываю форму 2
    connect(this, &MainWindow::signalFromButton(row, column), this, &main_page::setters); // Тут ошибка
    mp->show();
}


Добавлено через 9 минут
Что-то я конкретно торможу. Банальные ошибки не замечаю. Не ругайте сильно.

Добавлено через 45 минут
Вопрос решен методом объявления геттеров и сеттеров в классах. Это самое элементарное, но сигналы и слоты я не потянул. Если кого-либо не затруднит - объясните как все-таки с ними работать. Желательно на моем примере. Спасибо.

Для тех, у кого возникнут подобные проблемы и необходимости:

1. В header(.h) файле, в классе(новом) объявляем public функции get, set. В private этого же класса объявляем необходимые переменные, пример:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class main_page : public QWidget
{
    Q_OBJECT
 
public:
    explicit main_page(QWidget *parent = 0);
    ~main_page();
    void setRow(int rw);
    int getRow();
 
private:
    Ui::main_page *ui;
    int row = 0;
 
 
};
2. В .cpp файле определяем эти функции:
C++ (Qt)
1
2
3
4
5
6
7
8
9
void main_page::setRow(int rw)
{
    row = rw;
}
 
int main_page::getRow()
{
    return row;
}
3. В основном .cpp файле(основной форме) вызываем этот класс и присваиваем значения:
C++ (Qt)
1
2
3
main_page *mp = new main_page();
    mp->setRow(row);
    mp->show();
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2016, 05:13
Ответы с готовыми решениями:

Передать данные из одной формы на другую. Ошибка
Добрый день! Имеется две формы: MainWindow, form_add. В form_add три текстовых поля, хочу, чтобы...

Как вычисленное значение с одной формы передать на другую?
Доброго времени суток. На форме mainwindows у меня вычисляется значение первого столбца строки...

Передать данные с одной формы на другую
вопрос..есть 2 формы. на одной в текстбокс выводиться инфа. как сделать так, чтобы при запуске...

Передать данные из одной формы в другую
форма 1 public partial class Form1 : Form { public Form1() { ...

1
7165 / 6140 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
18.11.2016, 09:31 2
У main_page слот должен быть в секции "public slots". А чтобы сигнал работал, его нужно отправлять через emit - где у тебя emit и нужна ли вообще такая схема? Если передача этих параметров разовая при создании main_page, то используй передачу через конструктор - добавь в него нужные параметры.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2016, 09:31
Помогаю со студенческими работами здесь

Передать данные с одной формы на другую
В родительской форме пользователь выбирает колличество вводимых строк и заполняет информацией...

Передать данные из одной формы в другую
Надо передать данные из одной формы в другую.Использую свойство &quot;родитель&quot; и что-то не работает.....

Передать данные из одной формы в другую
На первой форме есть treeView1, в котором описаны страны и города. Нужно передать выбраный город на...

Передать данные из одной формы в другую
Такая интересная ситуация, есть две формы и один класс Код вот такой : форма1, на ней только...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru