У меня есть объект с некоторыми данными:
class MyObject
{
public:
Recipe(<Some Arguments>);
}
и диалоговое окно для редактирования значений этого объекта. Этот диалог получает ссылку на этот объект и визуализирует значения. Я использую ссылку, потому что я хочу хранить данные только один раз в памяти. Поэтому я передаю ссылку на свои данные каждому окну, в котором используются данные.
class MyDialog: public QDialog
{
private:
Ui::MyDialog* _mUi;
MyObject _mNew;
MyObject& _mOld;
};
MyDialog::MyDialog(MyObject& Old, QWidget* parent) : QDialog(parent),
_mUi(new Ui::MyDialog),
_mNew(Old)
_mOld(Old)
{
_mUi->setupUi(this);
// Visualize the values from "Old" in the GUI
}
В этом диалоговом окне также есть несколько слотов для заполнения объекта _mNew
более новыми входными данными из GUI. Когда пользователь закончил редактирование, он может покинуть окно, нажав Save
, что вызовет следующий код:
if(button == _mUi->buttonBox->button(QDialogButtonBox::Save))
{
// Overwrite the old values
_mOld = _mNew;
}
Значения обновляются, и все работает нормально.
Но я Я не уверен, что это хорошее решение. Рекомендуется ли передавать ссылку на пул данных (MyObject
) в диалоговое окно, редактировать значения и перезаписывать ссылку новым адресом, или существует более эффективный подход для реализации какого-либо метода редактирования?