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

时间:2017-10-21 07:30:37

标签: qt signals-slots

我正在尝试使用信号和插槽连接mainwindow和对话框。我对qt很新。我在lineEdit中有pushButtonmainwindow.ui,在lineEdit中有dialog.ui。我有那些非常基本的代码:

mainwindow.h:

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);
}


但在我点击pushButton后,对话框显示,但lineEdit中没有任何变化。
我希望我能够清楚地解释这一点吗? 有人可以向我解释为什么以及如何解决这个问题?感谢。

2 个答案:

答案 0 :(得分:0)

你必须在之前创建连接

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

答案 1 :(得分: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());
}