《Qt》part 4 Qt5.5.0窗口之间传值(二)
来源:互联网 发布:腾讯dns优化器手机版 编辑:程序博客网 时间:2024/06/03 01:55
part 4 Qt5.5.0窗口之间传值(二)
二、Public传值(二):主窗口传给子窗口
1、主窗口与子窗口之间传值:
主窗口为ParentChild,继承MainWindow类
子窗口为TestDialog,继承QDialog类
1)ParentChild:
(1)parentchild.h
点击按钮来触发传参
#ifndef PARENTCHILD_H#define PARENTCHILD_H#include <QtWidgets/QMainWindow>#include "ui_parentchild.h"#include "testdialog.h"#include "ui_testdialog.h"class ParentChild : public QMainWindow{Q_OBJECTpublic:ParentChild(QWidget *parent = 0);~ParentChild();private slots:void pushButton_clicked();private:Ui::ParentChild ui;};#endif // PARENTCHILD_H
(2)parentchild.cpp
#include "parentchild.h"ParentChild::ParentChild(QWidget *parent): QMainWindow(parent){ui.setupUi(this);this->setWindowTitle(QString::fromLocal8Bit("窗口传参测试—主窗口"));connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(pushButton_clicked()));}ParentChild::~ParentChild(){}voidParentChild::pushButton_clicked(){TestDialog *w = new TestDialog;w->dlgReturn(ui.lineEdit_1->text());w->show();}
(1)testdialog.h
#ifndef TESTDIALOG_H#define TESTDIALOG_H#include <QtWidgets/QDialog>#include "ui_testdialog.h"class TestDialog : public QDialog{Q_OBJECTpublic:TestDialog(QWidget *parent = 0);~TestDialog();public:void dlgReturn(QString data);private:Ui::TestDialog ui;};#endif // TESTDIALOG_H(2)testdialog.cpp
#include "testdialog.h"/////////////////////////////#include "ui_parentchild.h"#include "parentchild.h"/////////////////////////////TestDialog::TestDialog(QWidget *parent): QDialog(parent){ui.setupUi(this);this->setWindowTitle(QString::fromLocal8Bit("窗口传参测试—子窗口"));}TestDialog::~TestDialog(){}voidTestDialog::dlgReturn(QString data){ui.lineEdit->setText(data);}
3)main.cpp
此时用的是主窗口的头文件,首先弹出来的也是主窗口
/////////////////////////////#include "parentchild.h"//#include "testdialog.h"/////////////////////////////#include <QtWidgets/QApplication>int main(int argc, char *argv[]){QApplication a(argc, argv);ParentChild w;//TestDialog w;w.show();return a.exec();}运行:
三、全局变量传参
1、子窗口传参给主窗口
主窗口为ParentChild,继承MainWindow类
子窗口为TestDialog,继承QDialog类
1)ParentChild:
(1)testdialog.h
#ifndef TESTDIALOG_H#define TESTDIALOG_H#include <QtWidgets/QDialog>#include "ui_testdialog.h"class TestDialog : public QDialog{Q_OBJECTpublic:TestDialog(QWidget *parent = 0);~TestDialog();private slots://私有槽void pushButtonPressed();private:Ui::TestDialog ui;};#endif // TESTDIALOG_H(2)testdialog.cpp
#include "testdialog.h"/////////////////////////////#include "ui_parentchild.h"#include "parentchild.h"QString globaldata; //声明一个全局变量用于窗体间传值 /////////////////////////////TestDialog::TestDialog(QWidget *parent): QDialog(parent){ui.setupUi(this);this->setWindowTitle(QString::fromLocal8Bit("窗口传参测试—子窗口"));connect(ui.pushButton_ok, SIGNAL(clicked()), this, SLOT(pushButtonPressed()));}TestDialog::~TestDialog(){}void TestDialog::pushButtonPressed(){globaldata = ui.lineEdit->text(); //获取lineEdit输入的值赋值给全局变量 //ui.lineEdit->setText(globaldata);ParentChild *w = new ParentChild;w->update();w->show();}
2)ParentChild
(1)parentchild.h
#ifndef PARENTCHILD_H#define PARENTCHILD_H#include <QtWidgets/QMainWindow>#include "ui_parentchild.h"#include "testdialog.h"#include "ui_testdialog.h"class ParentChild : public QMainWindow{Q_OBJECTpublic:ParentChild(QWidget *parent = 0);~ParentChild();private slots://私有槽void pushButton_clicked();private:Ui::ParentChild ui;};#endif // PARENTCHILD_H
(2)parentchild.cpp
#include "parentchild.h"////////////////////////////#include "ui_parentchild.h"extern QString globaldata; //声明外部变量 ///////////////////////////ParentChild::ParentChild(QWidget *parent): QMainWindow(parent){ui.setupUi(this);this->setWindowTitle(QString::fromLocal8Bit("窗口传参测试—主窗口"));ui.label->setText(globaldata); //对全局变量进行显示ui.lineEdit_1->setText(globaldata); //对全局变量进行显示 connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(pushButton_clicked()));}ParentChild::~ParentChild(){}voidParentChild::pushButton_clicked(){TestDialog *w = new TestDialog;/*w->dlgReturn(ui.lineEdit_1->text());*/w->show();}
3)main.cpp
/////////////////////////////#include "parentchild.h"#include "testdialog.h"/////////////////////////////#include <QtWidgets/QApplication>int main(int argc, char *argv[]){QApplication a(argc, argv);ParentChild w1;//TestDialog w2;w1.show();//w2.show();return a.exec();}运行:
由于在子窗口中点击确认按钮后会触发信号槽,在槽函数中有new了一个新的主窗口,所以每次在子窗口中点击确认按钮后,都会弹出新的主窗口来,而之前的没关掉。
0 0
- 《Qt》part 4 Qt5.5.0窗口之间传值(二)
- 《Qt》part 3 Qt5.5.0窗口之间传值(一)
- Qt5基础(二)编写Qt多窗口程序笔记
- 《Qt》part 5 Qt5.5.0串口通信
- vs2013+qt5.5.0创建qt窗口工程
- QT5每日一学(二)编写QT多窗口程序
- 认识QT ----- 多窗口以及窗口之间的传值
- 《Qt》part 10 Qt5.5 状态栏设置
- 《Qt》part 11 Qt5.5 VowelBox
- 关于Qt窗口之间的传值问题
- Part 03 主窗口(Qt)[2012.02.10]
- 《Qt》part 9 Qt5.5中文乱码解决方法汇总
- 转:QT实现阴影窗口(二)
- Qt之主窗口(二)
- QT5(5)窗口布局
- Qt5 text_Editor(二)
- [VC++]窗口之间传值
- 【C#】 窗口之间传值
- 设置布局不随输入框键盘出现而上移
- 未检测到Java SDK 环境-Java环境变量设置-Java开发环境搭建
- 用AFNetworking3.0封装网络请求
- 表达式求值(栈)
- poj2387(堆优化dijiskla模版,通过pair写的)
- 《Qt》part 4 Qt5.5.0窗口之间传值(二)
- 二叉查找树Java实现代码
- Java - 数据库(mysql - 4)
- 条码识别
- Google物联网操作系统协同框架Weave深度解析
- css3 为什么要加 -moz-box-shadow -webkit-box-shadow -o-box-shadow,直接用box-shadow不是都能识别吗?
- 更改kvm虚拟机磁盘大小
- ERROR 6: GEOS support not enabled.
- linux下搭建FTP服务