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();
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)