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合並可以完成功能:主窗口舊名字傳遞給子窗口,子窗口重命名后將新名字傳遞給主窗口。


免責聲明!

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



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