概述
學習內容:子對話框向主對話框發送消息,使用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、代碼下載