学习内容:子对话框向主对话框发送消息,使用SIGNAL-SLOT实现。
IDE:Qt creator 4.11.0
编译器:MinGW 5.3.0 32bit for C++
1、sondialog.h文件
#ifndef SONDIALOG_H #define SONDIALOG_H #include <QDialog> namespace Ui { class SonDialog; } class SonDialog : public QDialog { Q_OBJECT public: explicit SonDialog(QWidget *parent = nullptr); ~SonDialog(); private slots: void on_pushButton_clicked(); private: Ui::SonDialog *ui; signals: void sendData(QString); }; #endif // SONDIALOG_H
2、sondialog.cpp文件
#include "sondialog.h" #include "ui_sondialog.h" SonDialog::SonDialog(QWidget *parent) : QDialog(parent), ui(new Ui::SonDialog) { ui->setupUi(this); } SonDialog::~SonDialog() { delete ui; } void SonDialog::on_pushButton_clicked() { emit sendData(ui->lineEdit->text()); }3、mainwindow.h文件
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include "sondialog.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; SonDialog *m_pSonDialog; private slots: void receiveData(QString str); }; #endif // MAINWINDOW_H
4、mainwindow.cpp文件
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); MainWindow::m_pSonDialog = new SonDialog; m_pSonDialog->show(); connect(m_pSonDialog, SIGNAL(sendData(QString)), this, SLOT(receiveData(QString))); } MainWindow::~MainWindow() { delete ui; } void MainWindow::receiveData(QString str) { ui->textBrowser->setText(str); }
5、main.cpp文件
#include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
6、效果。
7、代码下载
地址:https://download.csdn.net/download/sunriver2000/12577039
