// 主窗体.h
#pragma once
#include <QWidget>
#include "ui_parent.h"
#include "childdlg.h"
class Parent : public QWidget
{
Q_OBJECT
public:
Parent (QWidget* parent = nullptr);
~Parent ();
// 获取输入的行列数
int m_iRowC = 0;
int m_icolumnC = 0;
Ui::parent* ui;
ChildDlg* pCLDlg;
public slots:
void layoutSlt();
};
// 主窗体.cpp
#include "parent.h"
Parent::Parent(QWidget* parent)
: QWidget(parent)
{
ui.setupUi(this);
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(layoutSlt()));
}
ChartDataAcqWidget::~ChartDataAcqWidget()
{
delete ui;
}
void Parent::layoutSlt()
{
// 创建从对话框对象
pCLDlg = new ChartLayoutDialog(m_iRowC, m_icolumnC, this);
pCLDlg->setModal(true); // 设置模态
pCLDlg->exec();
// 获取从对话框对象的行列值
// 在ChartLayoutDialog中已经判断行列数均合法
m_iRowC = pCLDlg->irow;
m_icolumnC = pCLDlg->icol;
}
// 从窗体.h
#pragma once
#include <QDialog>
#include "ui_childdlg.h"
class ChildDlg : public QDialog
{
Q_OBJECT
public:
// 重点:思路就是在主窗体中创建从窗体对象调用其构造函数时将行列值传入
ChildDlg (int row, int col, QWidget* parent = nullptr);
~ChildDlg ();
// 存储行列数
int irow;
int icol;
public slots:
void sltSure();
void sltCancel();
private:
Ui::ChildDlg ui;
};
// 从对话框.cpp
#include "childdlg.h"
#include "ui_childdlg.h"
// 重写从对话框构造函数
ChildDlg::ChildDlg(int row, int col, QWidget* parent)
: QDialog(parent)
, irow(row)
, icol(col)
{
ui.setupUi(this);
// 将主对话框中的值进行展示(具体控件具体设置)
ui.rowsSx->setValue(irow);
ui.columnSx->setValue(icol);
connect(ui.sureBtn, SIGNAL(clicked()), this, SLOT(sltSure()));
connect(ui.cancelBtn, SIGNAL(clicked()), this, SLOT(sltCancel()));
}
ChildDlg::~ChildDlg()
{
delete ui;
}
void ChildDlg::sltSure()
{
if (ui.rowsSx->value() < 1 || ui.rowsSx->value() > 10
|| ui.columnSx->value() < 1 || ui.columnSx->value() > 10)
{
QMessageBox::warning(0, "", u8"行列数不合法");
return;
}
// 将控件中输入的值用类的成员属性进行存储
irow = ui.rowsSx->value();
icol = ui.columnSx->value();
QMessageBox::information(0, "", u8"添加成功");
close();
}
void ChildDlg::sltCancel()
{
ui.rowsSx->clear();
ui.columnSx->clear();
close();
}