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改变。
我希望我能够清楚地解释这一点吗? 有人可以向我解释为什么以及如何解决这个问题?谢谢。
答
后连接
发射信号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方法。
连接子句后发射信号 – saeed