首页 > Windows开发 > 详细

QT 窗体之间(MainWindow 和 Dialog)数据传递

时间:2016-03-16 18:53:07      阅读:896      评论:0      收藏:0      [点我收藏+]

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

QT 窗体之间(MainWindow 和 Dialog)数据传递

原文:http://www.cnblogs.com/91program/p/5284556.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!