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();
}