|
本帖最后由 滴水 于 2021-9-7 21:11 编辑
今天自学用QT写父窗口创建子窗口,然后子窗口给父窗口发送信号通信。
目前我可以通过父窗口创建子窗口后,在子窗口创建一个按钮(这里用到了QT的信号槽),当点击子窗口按钮时,可以成功投递信号到父窗口。
接着我想实现当子窗口显示出来后,主动发个信号给父窗口,意思告诉父窗口我显示出来了,但是我琢磨来琢磨去,不知道如何实现当子窗口显示出来后,主动发个信号告诉父窗口,百度了好久,尝试了都失败。
上截图:
下面是主窗口头文件源码:
- #pragma once
- #include <QtWidgets/QMainWindow>
- #include "ui_QtWidgetsApplication1.h"
- #include "QSubWidget.h"
- class QtWidgetsApplication1 : public QMainWindow
- {
- Q_OBJECT
- public:
- QtWidgetsApplication1(QWidget *parent = Q_NULLPTR);
- void ChangeWnd();
- void DealSubWnd();
-
- signals:
-
- private:
- Ui::QtWidgetsApplication1Class ui;
- QSubWidget QSubWnd;
- };
复制代码
下面是主窗口.cpp
- #include "QtWidgetsApplication1.h"
- QtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent)
- : QMainWindow(parent)
- {
- ui.setupUi(this);
- ui.pushButton->setParent(this);
- this->setWindowTitle("老大");
- connect(ui.pushButton, &QPushButton::clicked, this, &QtWidgetsApplication1::ChangeWnd);
- connect(&QSubWnd, &QSubWidget::MySignal, this, &QtWidgetsApplication1::DealSubWnd);
-
- }
- void QtWidgetsApplication1::ChangeWnd()
- {
- QtWidgetsApplication1::hide();
- QSubWnd.show();
- }
- void QtWidgetsApplication1::DealSubWnd()
- {
- QtWidgetsApplication1::show();
- QSubWnd.hide();
- }
复制代码
下面是子窗口头文件源码:
- #pragma once
- #include <QWidget>
- #include "ui_QSubWidget.h"
- class QSubWidget : public QWidget
- {
- Q_OBJECT
- public:
- QSubWidget(QWidget *parent = Q_NULLPTR);
- ~QSubWidget();
- void Test();
- signals:
- void MySignal();
- private:
- Ui::QSubWidget ui;
- };
复制代码
下面是子窗口.cpp
- #include "QSubWidget.h"
- QSubWidget::QSubWidget(QWidget *parent)
- : QWidget(parent)
- {
- ui.setupUi(this);
- //ui.pushButton.setParent(this);
- this->setWindowTitle("小弟");
- connect(ui.pushButton, &QPushButton::clicked, this, &QSubWidget::Test);
- }
- QSubWidget::~QSubWidget()
- {
- }
- void QSubWidget::Test()
- {
- emit MySignal();
- }
复制代码
截图和源码,是我测试子窗口通过button按钮点击发送信号给父窗口的演示代码。
又来麻烦老师们指点指点如何实现当子窗口显示出来后,主动发个信号告诉父窗口,我显示出来了。
本帖最后由 cpp2019 于 2021-10-6 23:54 编辑
录了个视频给你, https://streamja.com/BB6J9
QT窗口事件,鼠标事件,以及信号连接信号,信号连接槽的示例,看着电影写的,代码没优化比较乱,项目就不传了,窗体设计跟你这帖子里发的差不多,源码就那么简单的几句,视频里都看得到,如果需要项目文件可以上传给你。
|
上一篇: 类的public那一讲中发现的问题下一篇: 一个简单的strcpy定义求助
|