Получение данных от формы

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

Допустим, родительская форма хочет показывать сообщение с количеством лет, которые человек ввел на дочерней форме.

Добавим геттер для возраста.

InputAgeDialog.h:

#ifndef INPUTAGEDIALOG_H

#define INPUTAGEDIALOG_H

#include <QDialog>

namespace Ui {

class InputAgeDialog;

}

class InputAgeDialog: public QDialog

{

Q_OBJECT

public:

explicit InputAgeDialog(QWidget *parent = 0);

~ InputAgeDialog ();

void Initialize(int age);

int GetAge() const;

private:

Ui::InputAgeDialog *ui;

};

#endif // INPUTAGEDIALOG_H

InputAgeDialog.cpp:

#include "inputagedialog.h"

#include "ui_inputagedialog.h"

InputAgeDialog::InputAgeDialog(QWidget *parent):

QDialog(parent),

ui(new Ui::InputAgeDialog)

{

ui->setupUi(this);

}

void InputAgeDialog::Initialize(int age)

{

ui->m_inputTextLineEdit->setText(QString::number(age));

}

InputAgeDialog::~ InputAgeDialog ()

{

delete ui;

}

Int InputAgeDialog::GetAge() const

{

return ui->m_inputTextLineEdit->text().toInt();

}

MainWindow.h

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include <QMessageBox>

#include "inputagedialog.h"

MainWindow::MainWindow(QWidget *parent):

QMainWindow(parent),

ui(new Ui::MainWindow)

{

ui->setupUi(this);

}

MainWindow::~ MainWindow ()

{

delete ui;

}

void MainWindow::on_m_okPushButton_clicked()

{

InputAgeDialog dialog(this);

dialog.Initialize(18);

dialog. exec ();

int age = dialog.GetAge();

QMessageBox::information(this, "Возраст - CoolApplication", tr("Возраст %1").arg(age));

}

Как обработать ситуацию, когда диалог закрыли, не нажав на ОК

Например, не хочется ничего делать, пока диалог не закроют с нажатием на ОК.

void MainWindow::on_m_okPushButton_clicked()

{

InputAgeDialog dialog(this);

dialog.Initialize(18);

if (dialog. exec () == QDialog::DialogCode::Accepted)

{

int age = dialog.GetAge();

QMessageBox::information(this, "Возраст - CoolApplication", tr("Возраст %1").arg(age));

}

}

Если в диалоге не используются стандартные кнопки, а используются свои собственные, то диалог может вызвать метод Accept(): тогда он самозакроется с результатом выполнения Accepted.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: