Допустим, главная форма хочет передать диалоговому окну какие-то данные: например, выставить количество лет на 18.
Как это обычно делается? Ниже показаны 2 наиболее типичных подхода.
Подход 1. Для всех данных, которые планируется передавать извне, завести по сеттеру в классе формы, т.е. завести публичный метод SetAge(int value) в InputAgeDialog.h и его реализацию в InputAgeDialog.cpp файле. Также код по вызову формы видоизменить.
void MainWindow::on_m_okPushButton_clicked()
{
InputAgeDialog dialog(this);
dialog.SetAge(18);
dialog. exec ();
}
Подход 2. Завести публичный метод Initialize (int age) в InputAgeDialog. Для всех данных, которые планируется передавать извне, завести по дополнительному аргументу в этом методе.
Код в MainWindow.h будет выглядеть так:
void MainWindow::on_m_okPushButton_clicked()
{
InputAgeDialog dialog(this);
dialog.Initialize(18);
dialog. exec ();
}
Код 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);
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);
}