当前位置:   article > 正文

QT入门(三) 多窗体之间的数据传送_qt怎么在不用窗口之间传值

qt怎么在不用窗口之间传值

因为我用的是vs的编译器,所以网上例子很少,结合qt自带的编译器的例子,尝试了半天,实现从子窗体向主窗体的数据传递,

主窗体.h代码如下

  1. #ifndef ALGORITHMREALIZEPLATFORM_H
  2. #define ALGORITHMREALIZEPLATFORM_H
  3. #include <QtWidgets/QMainWindow>
  4. #include "ui_MainUI.h"
  5. #include "childwindow.h"
  6. class AlgorithmRealizePlatform : public QMainWindow
  7. {
  8. Q_OBJECT
  9. public:
  10. AlgorithmRealizePlatform(QWidget *parent = 0);
  11. ~AlgorithmRealizePlatform();
  12. signals:
  13. void sendsignal(QString);
  14. private:
  15. Ui::AlgorithmRealizePlatformClass ui;
  16. childwindow CW;
  17. QPushButton QPB;
  18. private slots:
  19. void reshow(QString);
  20. void test();
  21. };
  22. #endif // ALGORITHMREALIZEPLATFORM_H

主窗体.cpp文件

  1. #include "algorithmrealizeplatform.h"
  2. AlgorithmRealizePlatform::AlgorithmRealizePlatform(QWidget *parent)
  3. : QMainWindow(parent)
  4. {
  5. ui.setupUi(this);
  6. //普通的窗体内部信号和槽体的连接
  7. connect(&QPB, &QPushButton::clicked, this, &AlgorithmRealizePlatform::test);
  8. //与子窗体的信号连接
  9. connect(&CW, &childwindow::send_data, this, &AlgorithmRealizePlatform::reshow);
  10. }
  11. AlgorithmRealizePlatform::~AlgorithmRealizePlatform()
  12. {
  13. }
  14. void AlgorithmRealizePlatform::test()
  15. {
  16. QString a = "aaaaaaaaaa";
  17. ui.label->setText(a);
  18. CW.show();
  19. }
  20. void AlgorithmRealizePlatform::reshow(QString y)
  21. {
  22. QString a = "aaaaaaaaaa";
  23. ui.label->setText(y);
  24. //this->close();
  25. }

 子窗体.h文件

  1. #ifndef CHILDWINDOW_H
  2. #define CHILDWINDOW_H
  3. #include <QWidget>
  4. #include "ui_childwindow.h"
  5. class childwindow : public QWidget
  6. {
  7. Q_OBJECT
  8. public:
  9. childwindow(QWidget *parent = 0);
  10. ~childwindow();
  11. QString buf;
  12. signals:
  13. void send_data(QString y);
  14. private:
  15. Ui::childwindow ui;
  16. private slots:
  17. void on_push_close_clicked();
  18. };
  19. #endif // CHILDWINDOW_H

子窗体.cpp文件

  1. #include "childwindow.h"
  2. childwindow::childwindow(QWidget *parent)
  3. : QWidget(parent)
  4. {
  5. ui.setupUi(this);
  6. }
  7. childwindow::~childwindow()
  8. {
  9. }
  10. void childwindow::on_push_close_clicked()
  11. {
  12. buf = ui.label->text();
  13. emit send_data(buf); //传出子窗体信号
  14. this->close();
  15. }

参照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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/730712
推荐阅读
相关标签
  

闽ICP备14008679号