在主从窗体之间如何传值

// 主窗体.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();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值