Qt5 получение доступа к данным в одной форме из другой
Как получить доступ к данным в одной форме из другой?
У меня есть две формы: основная форма:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "manualform.h"
#include "key.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
Key cryptKey;
void MainWindow::on_autoKeyBtn_clicked()
{
cryptKey.createAuto();
QString output = cryptKey.toStrg();
ui->keyField->setText(output);
}
void MainWindow::on_manualKeyBtn_clicked()
{
ManualForm form;
form.setModal(true);
form.exec();
}
а второй:
#include "manualform.h"
#include "ui_manualform.h"
#include "key.h"
ManualForm::ManualForm(QWidget *parent) :
QDialog(parent),
ui(new Ui::ManualForm)
{
ui->setupUi(this);
}
ManualForm::~ManualForm()
{
delete ui;
}
Key key;
void ManualForm::on_confirmBtn_clicked()
{
this->close();
}
void ManualForm::on_resetBtn_clicked()
{
}
void ManualForm::on_checkBox00_toggled(bool checked)
{
Coord coord(0,0);
ui->checkBox09->setDisabled(checked);
ui->checkBox99->setDisabled(checked);
ui->checkBox90->setDisabled(checked);
key.add(coord);
}
Предполагается, что объект Key будет создан в ManualForm и перенесен в MainWindow или ManualForm получит доступ к cryptKey MainWindow. Но это проблема, которую я не могу решить.
1 ответ
Вы можете создать cryptKey
на кучу и передать его в вашу новую форму с сигналами и слотами. Кроме того, вы можете использовать QPointer для защиты на случай, если ваша другая форма удалит объект.
Вы должны определить сигнал в MainWindow и слот в ManualForm и cryptKey предпочтительно как объект класса в ManualForm. Тогда вы используете emit
отправить объект в ManualForm. Вам, вероятно, придется использовать qRegisterMetaType
а также для регистрации объекта.