博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt工作笔记-QDialog模式对话框传递数据给主窗口
阅读量:4223 次
发布时间:2019-05-26

本文共 1675 字,大约阅读时间需要 5 分钟。

话不多说,上图:

 

这里同样是采用了Qt的信号与槽机制。

 

项目文件分布如下:

 

代码如下:

dialog.h

 
  1. #ifndef DIALOG_H

  2. #define DIALOG_H

  3.  
  4. #include <QDialog>

  5.  
  6. namespace Ui {

  7. class Dialog;

  8. }

  9.  
  10. class Dialog : public QDialog

  11. {

  12. Q_OBJECT

  13. signals:

  14. void sendData(QString data);

  15.  
  16. public:

  17. explicit Dialog(QWidget *parent = 0);

  18. ~Dialog();

  19.  
  20. public slots:

  21. void pressBtn();

  22.  
  23. private:

  24. Ui::Dialog *ui;

  25. };

  26.  
  27. #endif // DIALOG_H

 

widget.h

 
  1. #ifndef WIDGET_H

  2. #define WIDGET_H

  3.  
  4. #include <QWidget>

  5. #include "dialog.h"

  6.  
  7. namespace Ui {

  8. class Widget;

  9. }

  10.  
  11. class Widget : public QWidget

  12. {

  13. Q_OBJECT

  14.  
  15. public slots:

  16. void pressBtn();

  17. void updateData(QString data);

  18. public:

  19. explicit Widget(QWidget *parent = 0);

  20. ~Widget();

  21.  
  22. private:

  23. Ui::Widget *ui;

  24. Dialog *dialog;

  25. };

  26.  
  27. #endif // WIDGET_H

 

 

dialog.cpp

 
  1. #include "dialog.h"

  2. #include "ui_dialog.h"

  3.  
  4. Dialog::Dialog(QWidget *parent) :

  5. QDialog(parent),

  6. ui(new Ui::Dialog)

  7. {

  8. ui->setupUi(this);

  9. connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(pressBtn()));

  10. }

  11.  
  12. void Dialog::pressBtn(){

  13. emit sendData(ui->lineEdit->text());

  14. this->close();

  15. }

  16.  
  17. Dialog::~Dialog()

  18. {

  19. delete ui;

  20. }

 

widget.cpp

 
  1. #include "widget.h"

  2. #include "ui_widget.h"

  3.  
  4. Widget::Widget(QWidget *parent) :

  5. QWidget(parent),

  6. ui(new Ui::Widget)

  7. {

  8. ui->setupUi(this);

  9. connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(pressBtn()));

  10. }

  11.  
  12. void Widget::updateData(QString data){

  13. ui->textEdit->append(data);

  14. }

  15.  
  16. void Widget::pressBtn(){

  17. dialog=new Dialog();

  18. connect(dialog,SIGNAL(sendData(QString)),this,SLOT(updateData(QString)));

  19. if(dialog->exec()==QDialog::Accepted){

  20. }

  21. delete dialog;

  22.  
  23. }

  24.  
  25. Widget::~Widget()

  26. {

  27. delete ui;

  28. }

 

main.cpp

 
  1. #include "widget.h"

  2. #include <QApplication>

  3.  
  4. int main(int argc, char *argv[])

  5. {

  6. QApplication a(argc, argv);

  7. Widget w;

  8. w.show();

  9.  
  10. return a.exec();

  11. }

你可能感兴趣的文章
CCScaleTo与CCScaleBy比较
查看>>
cocos2dx CCObject引用计数,内存释放分析(1)
查看>>
cocos2dx2.X 编译时,传递编译选项
查看>>
ccCArray.cpp 文件
查看>>
cocos2dx 屏幕大小
查看>>
libgdx: 2D Particle Editor工具使用
查看>>
eclipse 给jar库添加源码
查看>>
3.0正式版环境搭建(4)-- 运行(3)创建的工程
查看>>
C++ 枚举声明 enum 和 enum class
查看>>
Python optionParser模块的使用方法
查看>>
android 消灭星星出错
查看>>
PyCharm 教程(三)Hello world!
查看>>
PyCharm: 显示源码行号
查看>>
cocos2dx使用第三方字库.ttf,需要注意的事项
查看>>
cocos2.X版本lua端使用定时器的方法
查看>>
lua math.fmod使用注意小数问题
查看>>
lua 时间转化
查看>>
lua学习笔记之五(Lua中的数学库)
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第一篇:互联网时代U盘化生存方式 【张振华.Jack】
查看>>
CentOS6.4配置Hadoop-2.6.0集群配置安装指南(经过实战演练)【张振华.Jack】
查看>>