Qt 子窗口和父窗口,子窗口和子窗口控件获取

2023-10-30

前言

Qt开发过程中,难免会遇到子窗口需要获取父窗口某个控件的状态,或者是子窗口需要获取另外一个子窗口某个控件的状态,之前用过回调、全局变量、信号和槽连接,但是都太麻烦了,后面研究出一种简单的方法,会有一定的局限性,可以根据自己的情况酌情使用!

一、代码

前提是子窗口创建需要传父窗口的指针,具体代码如下

// 父窗口继承QWidget就行(或者你直接用父窗口类名,包含父窗口头文件,直接取label而不需要findChild)
// 父窗口控件对象名为label(设计师界面或者调用setObjectName设置),该对象名就像控件的ID
QWidget* pWidget = this->parentWidget();
if(pWidget != nullptr)
{
	QLabel* pLab = pWidget->findChild<QLabel*>("label");
    if(pLab != nullptr)
    {
    	ui->textEdit->append(pLab->text());
    }
}

同理,子窗口想获取另外一个子窗口的控件,也是用上面的代码,搞清楚逻辑就行;

另外,parentWidget还可以衍生出另外一种用法,就是子窗口调用父窗口方法和子窗口调用子窗口的方法,原理同上

20220408 补充全局查找代码

QWidget* pFindWnd = nullptr;
QWidgetList allWidgetList = QApplication::allWidgets();
for(QWidget* pWnd : allWidgetList)
{
    if(pWnd->objectName() == "MainWidget")
    {
        pFindWnd = pWnd;
        break;
    }
}

二、局限性

1、子窗口创建需要传父窗口指针;

2、不同子窗口控件对象名可能重名,调用findChild获取的是第一个定义的窗口,调用findChildren可以获取到所有同名控件列表,顺序是窗口定义顺序,但是这样筛选太麻烦;

3、parentWidget只能获取直接父窗口,如果是创建了几层的窗口调用,需要多次调用parentWidget

PS:如果使用过程中获取到的数据不对,尝试打印出对象名分析

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt 子窗口和父窗口,子窗口和子窗口控件获取 的相关文章

  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • 如何搭建qtwayland?

    我花了一整天的时间尝试使用QtWayland Compositor 1 0在 Qt 创建者中 我已经遵循了从那里开始的所有步骤https wiki qt io QtWayland https wiki qt io QtWayland但我收到
  • 带 Qt 的菜单栏/系统托盘应用程序

    我是 Qt PyQt 的新手 我正在尝试制作一个应用程序 其功能将从菜单栏 系统托盘执行 这里展示了一个完美的例子 我找不到关于如何做到这一点的好资源 有人可以建议吗 Thanks 我认为您正在寻找与QMenu and QMainWindo
  • 如何在Qt无框窗口中实现QSizeGrip?

    如何使用 Qt 无框窗口实现 QSizeGrip 代码会是什么样的 您只需在布局内窗口的一角添加 QSizeGrip 即可使其保持在该角落 QDialog dialog new QDialog 0 Qt FramelessWindowHin
  • 如何为 qmlRegisterSingletonType 实现单例提供程序?

    我想在 QML 中使用 C 类作为 Singleton 实例 并认为我必须使用 qmlRegisterSingletonType 注册它们 此函数需要一个提供已注册 C 类的实例的函数 我在 Windows 上使用最新的 Qt 5 3 1
  • Qt qDebug() 在 Windows shell 中不起作用

    我正在使用一个qDebug Qt 框架的printf屏幕上有东西 当我从 Qt Creator 运行应用程序时它工作得很好 但是当我尝试从 Windows 执行它时cmd它什么也没显示 为什么会发生这种情况 你必须添加 CONFIG con
  • 如何让小部件在上下文菜单出现时接收鼠标释放事件

    在Ubuntu20 04上 当上下文菜单出现时 我无法让小部件接收鼠标释放事件 而Windows可以接收 我的pyqt版本是5 15 2 我考虑过手动发送鼠标释放事件 但我不知道当上下文菜单出现时哪些系统会收到鼠标释放事件 这样做可能会导致
  • 获取 QListView 中所有可见项目的简单方法

    我正在尝试使用 Qt Framework 开发一个图像库应用程序 应用程序从所选文件夹加载所有图像 并使用 QListView 控件显示这些图像 但现在我想通过仅加载用户可见的图像来减少内存消耗 由于没有直接函数来获取视图中的所有可见项目
  • C++ SQL 查询构建库

    我正在寻找一个提供与 c SelectQueryBuilder 库类似功能的 c 库 http www codeproject com Articles 13419 SelectQueryBuilder Building complex a
  • 使用 OpenGL 渲染 QImage

    与我相关的其他问题 https stackoverflow com questions 20126354 render qimage from sooffscreenrenderer in qglwidget 我认为更核心的问题是 如何渲染
  • 在 Qt 中使用多个不同的流读取同一文件

    使用 Qt 是否可以使用多个流读取文件以同时访问其中的不同数据部分 请注意 Qt 中的流 QTextStream QDataStream 不处理底层设备中的位置 流类只是一个包装器 用于更轻松地解析设备 QFile 实例 内的二进制数据 因
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • 如何在 Qt 应用程序中嵌入 Python 解释器?

    有没有一种简单的方法可以将 Python 解释器嵌入到 Qt 应用程序中 如果可能的话 我希望有一个跨平台的解决方案 这就是目的PythonQt http pythonqt sourceforge net 它支持 Windows Linux
  • Qt中Q_PROPERTY的意义是什么?

    我无法理解 Q PROPERTY 的用法 Q PROPERTY 如何帮助程序具有防御性 它是干什么用的 我看过这个论坛 但确实无法应用 我已经理解了这个例子 但不明白它的用法 这是一个例子 我能从中得到什么 我知道阅读将赋予只读特权 wri
  • Qt中用于线程间通信的类设计

    问题陈述 用相机跟踪物体并相应地移动相机的方位角和仰角 Process 相机获取物体的图像 处理相机的每一帧以查找物体 应该被跟踪 并将每帧中生成的信息传递给机械设备 万向节 以平移和倾斜方式移动摄像机 Design 主 Gui 在一个线程
  • 如何将自定义 Qt 类型与 QML 信号一起使用?

    我在 Qt 5 2 qml 应用程序中创建了一个自定义类型 class Setting public QObject Q OBJECT Q PROPERTY QString key READ key WRITE setKey Q PROPE
  • 了解 Qt3D 创建的网格

    我创建了一个 Qt3D 网格 如下所示 Qt3DCore QEntity newEntity new Qt3DCore QEntity Qt3DExtras QConeMesh mesh new Qt3DExtras QConeMesh m
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我
  • QFileSystemModel setRootPath

    我正在尝试创建一个 Qt 应用程序来显示文件夹 Mac OS 中的 Users 文件夹 的内容 这是代码 QFileSystemModel dirModel new QFileSystemModel dirModel gt setRootP
  • QML 列表视图拖放

    我想创建两个 qml 列表视图 可以执行两个功能 拖放一个列表中的项目以更改项目的顺序 跨列表拖放项目 项目将从一个列表中删除并添加到另一个列表中 根据 Qt 文档中的拖放示例 我决定创建两个访问同一列表模型的列表视图 列表模型中的每个项目

随机推荐

  • 二叉树的五种遍历方式

    目录 1 前序遍历 1 递归实现前序遍历 2 非递归实现前序遍历 2 中序遍历 1 递归实现中序遍历 2 非递归实现中序遍历 3 后序遍历 1 递归实现后序遍历 2 非递归实现后序遍历 4 层序遍历 5 之字形遍历 二叉树是一种重要的数据结
  • conda冗余package的清理(.conda/pkgs)

    今天跑一个论文的代码 结果环境给我报错 说我numpy的版本太高 我删掉重新pip install 结果又出其他问题 问了学长 学长说是把tensorflow和pytorch放一起了 冲突 又是一个血的教训 只好重新配环境 结果一看自己的p
  • 一天走七万步是什么体验?

    嗨大家好 我是南瓜的好朋友西瓜 最近是迷恋上运动的 每天跑不够5w步不带停的那种 为什么这么说呢 jio要跑断的西瓜每天7万步是什么体验呢 当然是沉浸在运动的欢畅中空调的庇护下 说正经的 大家好 今天带给大家的是一键称霸微信运动排行榜的超级
  • f452虚拟服务器,F460 F452 获取超级密码 解决 LOID 注册断线 保留telnet 无需ttl 不用拔光纤...

    有台F460需要改成拨号 找资料参考了以下两篇 http www hackblog cn post 80 html 还是遇到问题获取不到超级密码 第一个是一注册LOID就掉线 第二个是系统是默认只读无法写到httpd目录里 想着断线会不会是
  • 组播基础实验,基于ENSP

    实验拓扑 实验步骤 安装VLS 一个媒体播放器 在进行ENSP的组播实验中 扮演组播源播放视频 组成员接受视频的作用 在做组播实验之前 需要完成单播的基础建设 IGP需要先部署好 保证接受者和源是可达的 在最后一跳路由器上和组成员之间运行I
  • 统计从键盘输入一行字符的个数.c

    统计从键盘输入一行字符的个数 一个字符代表一个 一个汉字代表两个 思想 当输入的字符不等于键盘上的enter键时 每输入一个字符就加1 include
  • Java基础 :HashSet(使用方法详解)

    Java HashSet HashSet 基于 HashMap 来实现的 是一个不允许有重复元素的集合 HashSet 允许有 null 值 HashSet 是无序的 即不会记录插入的顺序 HashSet 不是线程安全的 如果多个线程尝试同
  • ORA-01795: 列表中的最大表达式数为1000的解决方法

    ORA 01795 列表中的最大表达式数为1000的解决方法 IN中的数据量不能超过1000条 解决方案 把条件分成多个少于1000的IN即 DELETE FROM T MM SECTION SITE UPDATE WHERE T T MM
  • python绘图点样式

    plt plot x y x markersize 3 linestyle color darkgreen
  • unity体感游戏--接钻石游戏(三)游戏物体碰撞得分

    u3d的碰撞函数是OnTriggerEnter 代码如下 using UnityEngine using System Collections public class onCollider MonoBehaviour public Gam
  • 阿里云ECS服务器使用教程 新手上云好助手

    随着普及率越来越高 云服务器已经成为企业及个人用户开展网络业务的首选了 阿里云服务器在国内起步早 现在的用户数量是国内第一 全球五强 因为初次接触云服务 所以阿里云服务器的使用方法 对于很多新手小白还不太了解 下面老魏就讲解阿里云服务器的简
  • 多种方式解决Java控制台报错 java.util.LinkedHashMap cannot be cast to.....

    问题描述 今天在使用RestTemplate调用服务的时候 因为服务提供者返回的是一个List集合 所以在使用消费者调用的时候 restTemplate getForObject 期待返回的类型直接写成了List class 相关代码如下
  • 写5个数学建模的经典模型案例和代码

    1 线性规划模型案例 生产计划 假设一家工厂生产两种产品A和B 每个月有100个工作日 每个工作日可以生产200个A产品或150个B产品 A产品售价为200元 个 B产品售价为300元 个 每个月至少需要保证收入不低于200000元 制定生
  • 随机效应估算与固定效应估算_固定效应还是随机效应——Hausman检验.PPT

    固定效应还是随机效应 Hausman检验 7 3 随机效应模型估计 7 3 2 用EViews7 2估计随机效应模型 数据导入 数据结构转换以及模型设定与固定效应模型估计一样 不同的是在panel option的cross section中
  • Vue之父子组件通过事件通信

    前言 组件间传值的章节我们知道父组件给子组件传值的时候 使用v bind的方式定义一个属性传值 子组件根据这个属性名去接收父组件的值 但是假如子组件想给父组件一些反馈呢 就不能使用这种方式来 而是使用事件的方式 父组件通过注册这个事件的监听
  • 使用Docker安装Mysql数据库,及国内常用docker镜像地址

    1 安装docker 输入 yum install y docker 2 配置docker镜像地址 输入 vi etc docker daemon json 在配置文件中写入 registry mirrors http hub mirror
  • 拷贝复制命令行输出放在系统剪贴板上

    转载自 http oldratlee com post 2012 12 23 command output to clip 为什么要这么做 直接把命令的输出 比如 grep awk sed find 或是你的程序输出结果 放到剪切板上 这么
  • Redis使用总结(三、缓存击穿问题)

    什么是缓存击穿 在谈论缓存击穿之前 我们先来回忆下从缓存中加载数据的逻辑 如下图所示 因此 如果黑客每次故意查询一个在缓存内必然不存在的数据 导致每次请求都要去存储层去查询 这样缓存就失去了意义 如果在大流量下数据库可能挂掉 这就是缓存击穿
  • 低功耗设计之门控时钟

    门控时钟一般是用于多比特的数据 因为门控单元也有资源消耗 需要耗电 一般数据位宽超过3bit才会有收益 1 与门 或门 门控时钟 门控时钟的控制信号可以选用高电平有效或低电平有效 若控制信号高电平有效 可以使用与门进行时钟门控 时钟被关闭时
  • Qt 子窗口和父窗口,子窗口和子窗口控件获取

    文章目录 前言 一 代码 二 局限性 前言 Qt开发过程中 难免会遇到子窗口需要获取父窗口某个控件的状态 或者是子窗口需要获取另外一个子窗口某个控件的状态 之前用过回调 全局变量 信号和槽连接 但是都太麻烦了 后面研究出一种简单的方法 会有