赞
踩
因为我用的是vs的编译器,所以网上例子很少,结合qt自带的编译器的例子,尝试了半天,实现从子窗体向主窗体的数据传递,
主窗体.h代码如下
- #ifndef ALGORITHMREALIZEPLATFORM_H
- #define ALGORITHMREALIZEPLATFORM_H
-
- #include <QtWidgets/QMainWindow>
- #include "ui_MainUI.h"
- #include "childwindow.h"
-
- class AlgorithmRealizePlatform : public QMainWindow
- {
- Q_OBJECT
-
- public:
- AlgorithmRealizePlatform(QWidget *parent = 0);
- ~AlgorithmRealizePlatform();
- signals:
- void sendsignal(QString);
-
- private:
- Ui::AlgorithmRealizePlatformClass ui;
- childwindow CW;
- QPushButton QPB;
- private slots:
- void reshow(QString);
- void test();
- };
-
- #endif // ALGORITHMREALIZEPLATFORM_H
主窗体.cpp文件
- #include "algorithmrealizeplatform.h"
-
- AlgorithmRealizePlatform::AlgorithmRealizePlatform(QWidget *parent)
- : QMainWindow(parent)
- {
- ui.setupUi(this);
- //普通的窗体内部信号和槽体的连接
- connect(&QPB, &QPushButton::clicked, this, &AlgorithmRealizePlatform::test);
- //与子窗体的信号连接
- connect(&CW, &childwindow::send_data, this, &AlgorithmRealizePlatform::reshow);
- }
-
- AlgorithmRealizePlatform::~AlgorithmRealizePlatform()
- {
-
- }
-
- void AlgorithmRealizePlatform::test()
- {
- QString a = "aaaaaaaaaa";
- ui.label->setText(a);
- CW.show();
- }
-
- void AlgorithmRealizePlatform::reshow(QString y)
- {
- QString a = "aaaaaaaaaa";
- ui.label->setText(y);
- //this->close();
- }
子窗体.h文件
- #ifndef CHILDWINDOW_H
- #define CHILDWINDOW_H
-
- #include <QWidget>
- #include "ui_childwindow.h"
-
- class childwindow : public QWidget
- {
- Q_OBJECT
-
- public:
- childwindow(QWidget *parent = 0);
- ~childwindow();
- QString buf;
-
- signals:
- void send_data(QString y);
-
- private:
- Ui::childwindow ui;
- private slots:
- void on_push_close_clicked();
- };
-
- #endif // CHILDWINDOW_H
子窗体.cpp文件
- #include "childwindow.h"
-
- childwindow::childwindow(QWidget *parent)
- : QWidget(parent)
- {
- ui.setupUi(this);
- }
-
- childwindow::~childwindow()
- {
-
- }
-
- void childwindow::on_push_close_clicked()
- {
- buf = ui.label->text();
- emit send_data(buf); //传出子窗体信号
- this->close();
- }
参照https://blog.csdn.net/weibo1230123/article/details/79116016改写的,
这里,我对connect(sender, SIGNAL(signal), receiver, SLOT(slot))的理解是:
1、sender和receiver分别是信号端和接收端的QObject的实例化,signal和slot是其中的具体方法
2、需要注意的是signal和slot的参数需要尽量一致吧,不要找麻烦,想继续的话,转https://blog.csdn.net/WilliamSun0122/article/details/72810352
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。