Qt5 получение доступа к данным в одной форме из другой - PullRequest
0 голосов
/ 06 мая 2018

Как получить доступ к данным в одной форме из другой?

У меня есть две формы: основная форма:

#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 Ответ

0 голосов
/ 06 мая 2018

Вы можете создать cryptKey в куче и передать его в новую форму с сигналами и слотами . Кроме того, вы можете использовать QPointer для защиты на случай, если ваша другая форма удалит объект.

Вы должны определить сигнал в MainWindow и слот в ManualForm и cryptKey предпочтительно как объект класса в ManualForm. Затем вы используете emit для отправки объекта в ManualForm. Вам, вероятно, придется также использовать qRegisterMetaType для регистрации объекта.

...