2017-10-21 58 views
0

我想使用信號和插槽連接主窗口和對話框。我對qt非常陌生。我在mainwindow.ui中有一個lineEdit和一個pushButton,它是dialog.ui中的一個lineEdit。我有這些最基本的代碼:

mainwindow.h:
Qt使用信號和插槽連接主窗口和對話框

signals: 
    void sendString(QString); 


mainwindow.cpp:

void MainWindow::on_pushButton_clicked() 
{ 
    Dialog *mDialog = new Dialog(this); 
    emit sendString(ui->lineEdit->text()); 
    connect(this, SIGNAL(sendString(QString)), mDialog, SLOT(showString(QString))); 
    mDialog->show(); 
} 


dialog.h:

private slots: 
    void showString(QString); 


dialog.cpp:

void Dialog::showString(QString str) 
{ 
    ui->lineEdit->setText(str); 
} 


但經過我點擊按鈕,對話框顯示,但沒有在lineEdit改變。
我希望我能夠清楚地解釋這一點嗎? 有人可以向我解釋爲什麼以及如何解決這個問題?謝謝。

+0

連接子句後發射信號 – saeed

回答

0

後連接

發射信號
void MainWindow::on_pushButton_clicked() 
{ 
    Dialog *mDialog = new Dialog(this); 
    connect(this, SIGNAL(sendString(QString)), mDialog, SLOT(showString(QString))); 
    mDialog->show(); 

    emit sendString(ui->lineEdit->text()); 
} 
0

您必須在之前創建連接發出。

但在你的情況下,你根本不需要主窗口的信號。您直接調用showString方法。