话不多说,上图:
这里同样是采用了Qt的信号与槽机制。
项目文件分布如下:
代码如下:
dialog.h
#ifndef DIALOG_H#define DIALOG_H#include <QDialog>namespace Ui {class Dialog;}class Dialog : public QDialog{Q_OBJECTsignals:void sendData(QString data);public:explicit Dialog(QWidget *parent = 0);~Dialog();public slots:void pressBtn();private:Ui::Dialog *ui;};#endif // DIALOG_H
widget.h
#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include "dialog.h"namespace Ui {class Widget;}class Widget : public QWidget{Q_OBJECTpublic slots:void pressBtn();void updateData(QString data);public:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;Dialog *dialog;};#endif // WIDGET_H
dialog.cpp
#include "dialog.h"#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog){ui->setupUi(this);connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(pressBtn()));}void Dialog::pressBtn(){emit sendData(ui->lineEdit->text());this->close();}Dialog::~Dialog(){delete ui;}
widget.cpp
#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget){ui->setupUi(this);connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(pressBtn()));}void Widget::updateData(QString data){ui->textEdit->append(data);}void Widget::pressBtn(){dialog=new Dialog();connect(dialog,SIGNAL(sendData(QString)),this,SLOT(updateData(QString)));if(dialog->exec()==QDialog::Accepted){}delete dialog;}Widget::~Widget(){delete ui;}
main.cpp
#include "widget.h"#include <QApplication>int main(int argc, char *argv[]){QApplication a(argc, argv);Widget w;w.show();return a.exec();}