Передача данных окнам

Допустим, главная форма хочет передать диалоговому окну какие-то данные: например, выставить количество лет на 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);

}


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



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