QT的Widget类父子窗口之间数据传递

QT父子窗口之间的数据传递

1、 对话框为QWidget类

方法一:

父类:Wgt_Father
子类:Wgt_Child

父类中的按钮槽函数

void Wgt_Father::On_PushButton_Edit_Clicked()
{
	Wgt_Child* wgt = new Wgt_Child(this);
	wgt->setWindowFlag(Qt::Dialog);
	wgt->setData(data);
	wgt->show();
}

子类中的按钮槽函数

void Wgt_Child::On_PushButton_Ok_Clicked()
{
	Wgt_Father* wgt = (Wgt_Father*)parentWidget();
	wgt->setFunc(rR, r);

	close();
}
当子类中点击确定时,Wgt_Child 中的数据就会传递到 Wgt_Father 中

方法二:定义相应的信号槽(这里套用GPT代码,方法一没有用可尝试)

class Wgt_SpeedcutPlotParam : public QWidget {
    Q_OBJECT

public:
    // 构造函数、其他方法...

    void setData(const YourDataType& data) {
        // 设置数据的实现
    }

signals:
    void dataAccepted(const YourDataType& data);

private slots:
    void onOkButtonClicked() {
        // 当确定按钮被点击时,发出信号
        emit dataAccepted(m_Data);
    }

private:
    YourDataType m_Data;
    // 其他成员变量...
};

void Wgt_CreateTollStation::On_PushButton_EditSpeedcut_Clicked() {
    Wgt_SpeedcutPlotParam* wgt = new Wgt_SpeedcutPlotParam(this);
    wgt->setData(m_Data);

    // 连接信号和槽
    connect(wgt, &Wgt_SpeedcutPlotParam::dataAccepted, this, &Wgt_CreateTollStation::onDataAccepted);

    // 显示子窗口
    wgt->show();
}

void Wgt_CreateTollStation::onDataAccepted(const YourDataType& data) {
    // 处理子窗口传递过来的数据
}

2、对话框为QDialog类

使用wgt->exec() == Qt::Dialog,这里就是子窗口点击确定的时候发出的信号

父类中的按钮槽函数

void Wgt_Father::On_TableWidget_Clicked(int row, int column)
{
	m_nCurRow = ui.tableWidget->currentRow();
	Wgt_Child* wgt = new Wgt_Child(this);
	if (wgt->exec() == QDialog::Accepted)
	{
		int nImgIndex;
		wgt->getImgIndex(nImgIndex);
		//其余操作
	}
	
}

子类中的确定按钮函数

void Wgt_Child::On_PushButton_Ok_Clicked()
{
	done(Accepted);
	close();
}

void Wgt_Child::On_PushButton_Cal_Clicked()
{
	done(Rejected);
	close();
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值