Qt使用信号和槽连接主窗口和对话框
Qt connect mainwindow and dialog using signal and slot
我正在尝试使用信号和插槽连接 mainwindow
和对话。我对qt很陌生。我在 mainwindow.ui
中有一个 lineEdit
和一个 pushButton
,在 dialog.ui
中有一个 lineEdit
。我有那些非常基本的代码:
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
里面没有任何变化。
我希望我解释清楚了吗?
有人可以向我解释为什么以及如何解决这个问题吗?谢谢。
您必须在 发射之前创建连接。
但在您的情况下,您根本不需要主窗口的信号。您直接调用 showString 方法。
连接后发出信号
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());
}
我正在尝试使用信号和插槽连接 mainwindow
和对话。我对qt很陌生。我在 mainwindow.ui
中有一个 lineEdit
和一个 pushButton
,在 dialog.ui
中有一个 lineEdit
。我有那些非常基本的代码:
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
里面没有任何变化。
我希望我解释清楚了吗?
有人可以向我解释为什么以及如何解决这个问题吗?谢谢。
您必须在 发射之前创建连接。
但在您的情况下,您根本不需要主窗口的信号。您直接调用 showString 方法。
连接后发出信号
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());
}