一、主窗体与子窗体传参

方法有很多,这里介绍一种通过重载子窗体的构造函数实现主窗体参数传入到子窗体,并通过QT信号和槽的机制实现子窗口到主窗口值的传递。

主和子窗体的设置如下:

主要实现功能为:

1 主窗口LineEdit控件按下Enter键后,弹出Dialog窗体并显示与主窗体一样的内容;

2 子窗体按下pushButton按钮后,主窗口显示子窗口内容。

二、功能1  主窗体到子窗体传值

头文件如下:

子窗体:

 #ifndef DIALOG_H
#define DIALOG_H #include <QDialog>
#include <QString> namespace Ui {
class Dialog;
} class Dialog : public QDialog
{
Q_OBJECT public:
Dialog(QWidget *parent = );
Dialog(QWidget *parent,QString S); // 构造函数 传值 ~Dialog(); signals:
void sendQString(QString); private slots:
void on_pushButton_clicked(); private:
Ui::Dialog *ui;
QString myS; // 接受主窗体传值
}; #endif // DIALOG_H

主窗体:

 #ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow>
#include "dialog.h" namespace Ui {
class MainWindow;
} class MainWindow : public QMainWindow
{
Q_OBJECT public:
MainWindow(QWidget *parent = );
~MainWindow(); private slots:
void receiveSINGAL(QString S); // 接受子窗体信号的槽函数 void sendQStringToDialog(); // Enter建按下的槽函数 private:
Ui::MainWindow *ui;
Dialog *myDialog; // 子窗体
}; #endif // MAINWINDOW_H

源文件:

子窗体:

 #include "dialog.h"
#include "ui_dialog.h" Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
} 11 Dialog::Dialog(QWidget *parent, QString S):
12 QDialog(parent),
13 myS(S),
14 ui(new Ui::Dialog)
15 {
16 ui->setupUi(this);
17 ui->lineEdit->setText(myS);
18 } Dialog::~Dialog()
{
delete ui;
} void Dialog::on_pushButton_clicked()
{
emit sendQString(ui->lineEdit->text());
}

主窗体:

 #include "mainwindow.h"
#include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->lineEdit,SIGNAL(returnPressed()),this,SLOT(sendQStringToDialog()));
//myDialog->show();
} MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::receiveSINGAL(QString S)
{
ui->lineEdit->setText(S);
} void MainWindow::sendQStringToDialog()
{
myDialog = new Dialog(this,ui->lineEdit->text());
connect(myDialog,SIGNAL(sendQString(QString)),this,SLOT(receiveSINGAL(QString)));
myDialog->show();
}

思想:主窗体首先定义一个按下Enter建后触发的槽sendQStringToDialog,在槽中实现重载的构造函数创建子窗体,并将值传入给Dialog中的LineEdit,最后建立信号和槽的连接connect(ui->lineEdit,SIGNAL(returnPressed()),this,SLOT(sendQStringToDialog()));

二、功能2  子窗体到主窗体传值


利用信号和槽的机制,在子窗体中定义一个信号sendQString,用于传值,并且在pushButton按钮按下的槽函数中发送信号。同时在主窗体定义一个接受信号的槽,并在槽中完成数据的传递。

如下:

PS:感谢网上的资源

2. QT窗体间值的传递的更多相关文章

  1. 3. QT窗体间值的传递(续)

    一.前言 上篇博客中通过重载子窗体的构造函数将主窗体的值传入到子窗体,但是在子窗体运行过程中如何才能将值动态的传入到子窗体?可以有两种办法,1.信号和槽的方式传值:2.主窗体中将传出值设置为publi ...

  2. C#不同窗体间通信,数据传递

    在一个项目中,很多时候都需要在窗体间进行数据传递和通信,最觉见的是父子窗体之间的数据传递,比如登录ID,各个窗体都需要知道.有很多文章都写了这方面的问题,提出很多优秀的方法,鄙人不才,搜了一些资料之后 ...

  3. WinForm登陆:窗体间的数据传递

    1. 登陆逻辑 FrmMain 为主窗体(启动窗体) FrmLogin 为登陆窗体 在“主窗体”中使用ShowDialog()方法显示“登陆窗体”,并通过“登陆窗体”的DialogResult告知“主 ...

  4. qt 窗体间通信

    利用qt的信号和槽,可以完成窗体间的通信,下面列出父子窗口利用信号和槽的相关代码. parent窗口: //parent.h #ifndef PARENT_H #define PARENT_H #in ...

  5. QT窗体间传值总结之Signal&Slot

    在写程序时,难免会碰到多窗体之间进行传值的问题.依照自己的理解,我把多窗体传值的可以使用的方法归纳如下: 1.使用QT中的Signal&Slot机制进行传值: 2.使用全局变量: 3.使用pu ...

  6. Iframe之间及iframe与父窗体之间值的传递

    方法一:ScriptManager.RegisterClientScriptBlock(this,typeof(Page), "NoInformation", "wind ...

  7. Qt 窗体间传值(代码备份)

    刚开始看的时候看的云里雾里的,现在稍微明白一点了.现在假设有一个form,一个MainWindow,如图所示: 实现点击PushButton,将文本框中的内容传输到MainWindow中,显示为Lab ...

  8. C#不同窗体间数据传递

    在做项目中经常会使用不同窗体之间的值,所以就有了传值的概念.最常见的是父子窗体之间的数据传递,比如登录ID,各个窗体都需要知道. 1.       如果很多窗体都需要用到某一窗体的东西,比如登录窗体记 ...

  9. 小菜学习Winform(五)窗体间传递数据

    前言 做项目的时候,winfrom因为没有B/S的缓存机制,窗体间传递数据没有B/S页面传递数据那么方便,今天我们就说下winfrom中窗体传值的几种方式. 共有字段传递 共有字段传递实现起来很方便, ...

随机推荐

  1. iOS9TableView分割线默认不显示,只有滑动的时候才显示 解决办法

    只有iOS9和iPhone6 plus模拟器上TableView分割线不会显示,后来终于找到了原因: 由于iPhone6 plus的分辨率较高,开发的时候同常都使用command + 3 或者 com ...

  2. [Search Engine] Compression in Inverted Index

    最近在学一些搜索引擎的内容,感觉挺费劲,所以就用博客当做自己的笔记,遇到一些需要整理的部分,就在这里整理一下. 今天的内容是对inverted index进行压缩.核心思想,用我自己的话来总结,就是“ ...

  3. Apache配置多个监听端口和不同的网站目录的简单方法(转)

    转自http://www.waaqi.com/archives/707.html 由于开发的多项目,每个项目又要独立,要用根目录地址. 所以这时候我们需要配置多个不同目录的Apache,如果是外部网可 ...

  4. CSS3 中的按钮效果与进度条

    效果如图

  5. include 和 require 的区别

    1. 首先不去介绍大家都知道的区别,百度上都进行了详细的说明,对于返回值的方面大家都很少提到. include 和 require 还有一个区别就是是否具有返回值.参见手册 对include 加载文件 ...

  6. asp编程中获取上下两个月第一天和最后一天的代码

    经常在asp编程遇到要获取上个月第一天和最后一天的日期,获取下个月第一天和最后一天的日期.这里总结了一下,将这些asp代码全部列出来了,以便以后遇到的时候使用.    上个月第一天:<%=dat ...

  7. Java Web开发及应用软件方向的学习计划

    从接触计算机以来,一直抱有很浓厚的兴趣.我并不擅长与人交际,与机器对话可能更有性格方面的优势.虽然我很想做出一些改变,但总得需要时间和历练,暂时也只能这样了~ 一直很向往代码的神秘,在梦之站待过两年时 ...

  8. Windows 下 pip和easy_install 的安装与使用

    最简单的莫过于用vs 开发python 的程序,集成PTVS插件后,果然简单易用,调试也方便. 手工搭建的话: 官网:https://pypi.python.org/pypi/setuptools 主 ...

  9. java获得指定日期的前一天,后一天的代码

    /** * 获得指定日期的前一天 * @param specifiedDay * @return * @throws Exception */ public static String getSpec ...

  10. Doxygen安装使用

    Doxygen是一个 C++.C.Java.Objective-C.Python.IDL(CORBA和Microsoft flavors).Fortran.VHDL.PHP.C#和D语言的文檔生成器. ...