我正在尝试使用信号和插槽连接mainwindow
和对话框。我对qt很新。我在lineEdit
中有pushButton
和mainwindow.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
中没有任何变化。
我希望我能够清楚地解释这一点吗?
有人可以向我解释为什么以及如何解决这个问题?感谢。
答案 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());
}