Qt使用信号和插槽连接主窗口和对话框

Qt使用信号和插槽连接主窗口和对话框

问题描述:

我想使用信号和插槽连接主窗口和对话框。我对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

后连接

发射信号
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()); 
} 

您必须在之前创建连接发出。

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