如何从另一种形式访问数据?
我有两种形式:
主要形式:
#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将可以访问MainWindow的cryptKey。但这是一个问题,我无法解决。
最佳答案
您可以在堆上创建cryptKey
并使用signals and slots将其传递到新表单。此外,如果其他表单删除了该对象,则可以使用QPointer进行保护。
您必须在MainWindow中定义一个信号,在ManualForm和cryptKey中定义一个插槽,最好在ManualForm中定义为一个类对象。然后,使用emit
将对象发送到ManualForm。您可能还必须使用qRegisterMetaType
来注册对象。
关于c++ - Qt5以另一种形式访问数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50199386/