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 重定义了!

posted @ 2016-03-16 18:07  91program  阅读(7994)  评论(0编辑  收藏  举报