本文共 1675 字,大约阅读时间需要 5 分钟。
话不多说,上图:
这里同样是采用了Qt的信号与槽机制。
项目文件分布如下:
代码如下:
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
signals:
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_OBJECT
public 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();
}