zoukankan      html  css  js  c++  java
  • 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 重定义了!

  • 相关阅读:
    Altium Designer 16 问题解决
    IAR FOR AVR 仿真过程中出现全局变量值不断随意变化的问题
    linux '--stdin'错误 -批量修改密码
    EmWin 字体相关函数
    EmWin 文本显示函数
    Win10下 usart驱动PL2303无法安装的问题
    EmWin 接触---基础函数
    Linux 下 Samba 服务器搭建
    MPLAB X IDE V4.15 创建工程,编译,问题处理
    EF Core MVC
  • 原文地址:https://www.cnblogs.com/91program/p/5284556.html
Copyright © 2011-2022 走看看