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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM