QT 窗体之间(MainWindow 和 Dialog)数据传递
在学习QT时,想实现一下QT下串口通话的功能。当时想将不常用的串口设置不放在主界面MainWindow中,而是放在一个弹出设置对话框(Dialog)中。
结果在实现时发现在设置对话框中修改了参数后,需要将修改后的参数传递到主窗体MainWindow中。
需要研究一下如何完成数据的传递? 实现的过程还是适用信号与糟的机制。
1) 在 MainWindow 中增加如下代码
1 SerSetting *pSerSettingDlg = new SerSetting; 2 connect(pSerSettingDlg,&SerSetting::getSerSetDlgParams, 3 this,&MainWindow::setSerSetDlgParams);
2) 在 MainWindow 中实现糟 setSerSetDlgParams
.h 中增加:
1 public slots: 2 void setSerSetDlgParams(int iDataBit,int iStopBoit,int iVerifyBit, 3 int iCtrlBit,bool bDts,bool bDtr);
.cpp 中增加:
1 void MainWindow::setSerSetDlgParams(int iDataBit,int iStopBoit,int iVerifyBit, 2 int iCtrlBit,bool bDts,bool bDtr) 3 { 4 qDebug() << "data bit: " << iDataBit; 5 qDebug() << "stop bit: " << iStopBoit; 6 qDebug() << "verify bit: " << iVerifyBit; 7 qDebug() << "control bit: " << iCtrlBit; 8 qDebug() << "DTS: " << bDts; 9 qDebug() << "DTR: " << bDtr; 10 }
3) 在 Dialog 中实现信号
.h 中增加:
1 signals: 2 void getSerSetDlgParams(int iDataBit,int iStopBoit,int iVerifyBit, 3 int iCtrlBit,bool bDts,bool bDtr);
.cpp 中增加:
1 void SerSetting::on_serSetOkBtn_clicked() 2 { 3 emit getSerSetDlgParams(iSelDataBit,iSelStopBit,iSelVerifyBit, 4 iSelCtrlBit,bSelDts,bSelDtr); 5 QDialog::accept(); 6 }
刚开始对信号不熟悉,竟然试着去实现信号的函数。这样做,在编译时会报错。出错信息大概是 getSerSetDlgParams 重定义了!