zoukankan      html  css  js  c++  java
  • Qt 主窗口与子窗口之间传值

    1、主函数向子函数传值:

    主窗口定义信号,子窗口定义槽函数,在主窗口将信号与槽连接起来

     

    mainwindow.h:

     1 #include<Dialog.h>
     2 
     3 signals:
     4 
     5         void sendStr(QString);
     6 
     7 private:
     8 
     9         Dialog *newDialog;

    mainwindow.cpp:
     1 void MainWindow::on_pushButton_clicked()   //自定义按钮函数 点击传值。
     2  
     3 {
     4  
     5          QTreeWidgetItem *item = ui->treeWidget->currentItem();  //自定义treeWidget
     6  
     7          newDialog = new Dialog();
     8  
     9          newDialog->setModal(true);   //模态
    10  
    11          QObject::connect(this,SIGNAL(sendStr(QString)),newDialog,SLOT(getStr(QString)));
    12  
    13          QString oldStr = item->text(0);  //向newDialog传当前节点名字
    14  
    15          emit sendStr(oldStr);
    16  
    17          newDialog->show();
    18  }
     

    dialog.h:

     1 private slots:
     2 
     3         void getStr(QString);

     

    dialog.cpp:
    1  void Dialog::getStr(QString str)
    2 {
    3  
    4          ui->lineEdit->setText(str);  //自定义linEdit对象,将oldStr 传入dialog并显示在linEdit中。
    5  
    6 }
     

    2、子函数向主函数传值:

    规则一致。代码相似: 子窗口中定义信号(emit),然后在父窗口中定义槽(),在主窗口中将槽和信号连接起来,


    mainwindow.h:
    1 #include<Dialog.h>
    2 
    3 private:
    4 
    5         Dialog *newDialog;
    6 
    7 private  slots:
    8 
    9         void getNewStr(QString);
    
    mainwindow.cpp:
     1 void MainWindow::getNewStr(QString newstr)  //将Dialog传回的值设为treeWidget当前节点的内容
     2 
     3 {
     4 
     5         QTreeWidgetItem *item = ui->treeWidget->currentItem();
     6 
     7         item->setText(0,newStr);   
     8 
     9 }
    10 
    11 void MainWindow::on_pushButton_clicked()   //自定义按钮函数,点击打开newDialog
    12 
    13 {
    14 
    15         newDialog = new Dialog();
    16 
    17         newDialog->setModal(true); //模态
    18 
    19         QObject::connect(newDialog,SIGNAL(sendNewStr(QString)),this,SLOT(getNewStr(QString)));
    20 
    21         newDialog->show();
    22 
    23 }
    
    dialog.h:
    1 signals:
    2 
    3         void sendNewStr(QString);
    
    dialog.cpp:
     1 void Dialog::on_okButton_clicked() //自定义传递按钮
     2 
     3 {
     4 
     5         QString newStr = ui->lineEdit->text();  //获取lineEdit中输入的内容为newStr
     6 
     7         emit sendNewStr(newStr );
     8 
     9         this->hide();  //传值后隐藏,回到MainWindow
    10 
    11 }

     

    3、将1、2合并可以完成功能:主窗口旧名字传递给子窗口,子窗口重命名后将新名字传递给主窗口。

  • 相关阅读:
    elementui form 相关表单验证
    函数注释备注
    elementui elform 某一值为数组,各项必填验证
    selenium等待的三种方式(详细)
    什么是python
    pytest基础
    pymysql数据库操作
    自动化测试1
    allure生成测试报告
    python读取excel的文件
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/12597929.html
Copyright © 2011-2022 走看看