2. QT窗体间值的传递
2015-07-20 22:22
447 查看
一、主窗体与子窗体传参
方法有很多,这里介绍一种通过重载子窗体的构造函数实现主窗体参数传入到子窗体,并通过QT信号和槽的机制实现子窗口到主窗口值的传递。
主和子窗体的设置如下:
主要实现功能为:
1 主窗口LineEdit控件按下Enter键后,弹出Dialog窗体并显示与主窗体一样的内容;
2 子窗体按下pushButton按钮后,主窗口显示子窗口内容。
二、功能1 主窗体到子窗体传值
头文件如下:
子窗体:
主窗体:
源文件:
子窗体:
主窗体:
思想:主窗体首先定义一个按下Enter建后触发的槽sendQStringToDialog,在槽中实现重载的构造函数创建子窗体,并将值传入给Dialog中的LineEdit,最后建立信号和槽的连接connect(ui->lineEdit,SIGNAL(returnPressed()),this,SLOT(sendQStringToDialog()));
二、功能2 子窗体到主窗体传值
利用信号和槽的机制,在子窗体中定义一个信号sendQString,用于传值,并且在pushButton按钮按下的槽函数中发送信号。同时在主窗体定义一个接受信号的槽,并在槽中完成数据的传递。
如下:
PS:感谢网上的资源
方法有很多,这里介绍一种通过重载子窗体的构造函数实现主窗体参数传入到子窗体,并通过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 = 0); 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 = 0); ~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:感谢网上的资源
相关文章推荐
- Qt MVC学习 模型子类化参考(二)
- Qt中show()与exec()
- PyQt之QHBoxLayout、QVBoxLayout 与QGridLayout
- Qt Creator中,include路径包含过程(或如何找到对应的头文件)
- QT获取网页内容
- PyQt的安装和使用案例
- Qt的一些基础知识
- QT中QWidget、QDialog及QMainWindow的区别
- qt线程动态回调被调类中的函数
- Qt学习之一,键盘事件细节
- QT 的信号与槽机制介绍
- 为qt添加sql驱动
- PyQt的Layout的比例化分块。
- QT中PRO文件写法
- ubuntu13.04下安装Qt5.5.0
- Qt自带的自动打包dll工具使用方法
- Qt5该插件机制(7)--插件开发演示示例代码(Lower-level API)
- Qt浅谈之三十系统托盘(QSystemTrayIcon)
- Ubuntu下创建QT桌面快捷方式
- QTP 中class 类的应用(二)