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 }