QT 中使用信号和槽实现主窗体和子窗体互相传值---使用全局变量、信号槽解决

利用信号和槽,通过全局类变量extern sSlot m_gsslot,实现主窗体和子窗体互相传值。而且主窗体和子窗体的头文件不用互相引用。

界面如下:主界面中有定时器,点击主界面按钮,子窗体的信号槽能够输出调试信息,同理,子窗体点击按钮时,主窗体的调试信息处也有输出。
sslot类中有两个信号和两个槽函数,感觉和使用全局变量差不多啊,还不如使用全局变量简单呢。。。。。。。先记载下来把。。。
在这里插入图片描述

代码下载地址:
https://download.csdn.net/download/u012719076/12827419

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 是的,在 Qt 窗体和它创建的子窗体信号都共用同一个线程。这意味着,当你在窗体或子窗体连接的信号被触发时,函数都将在同一个线程被调用。 如果你想要在不同的线程运行这些信号,你可以使用 Qt信号机制来实现Qt 信号机制允许你在不同的线程触发信号并在另一个线程调用函数。 如果你想要了解更多关于 Qt 信号和线程的信息,你可以参考 Qt 文档关于信号和多线程的部分。 ### 回答2: 在Qt信号-机制可以用于不同对象之间的通信。默认情况下,信号是在同一个线程执行的。对于窗体创建的子窗体,它们的信号将共用同一个线程,即窗体所在的线程。 这是因为在Qt,每个QObject派生类对象都有一个线程关联属性。当一个对象被创建时,默认情况下,它的线程关联属性与创建它的线程相同。因此,在窗体创建的子窗体将自动继承窗体所在的线程关联属性。 当子窗体创建后,如果在其信号的连接没有明确指定一个特定的线程,则会使用默认的连接方式,也就是信号将在同一个线程执行。这意味着,如果在窗体信号连接到子窗体,它们将在同一个线程执行,即窗体所在的线程。 然而,需要注意的是,Qt还提供了一些其他的连接方式,如Qt::DirectConnection和Qt::QueuedConnection等。这些连接方式可以通过明确指定连接类型来改变信号之间的线程关系。因此,如果通过特定的连接方式将信号连接到,它们可能会在不同的线程执行。 综上所述,Qt窗体创建的子窗体的默认信号是共用同一个线程的。但通过特定的连接方式,可以改变信号之间的线程关系。 ### 回答3: 在Qt窗体和子窗体信号可以共用同一个线程,也可以使用不同的线程。 如果窗体和子窗体属于同一个线程,它们之间的信号是直接连接的,事件的传递是在同一个线程完成的。这种情况下,当信号被触发时,函数将立即执行,不需要进行线程切换。 然而,在某些情况下,窗体和子窗体可能属于不同的线程。例如,如果子窗体是在一个新的线程创建的,或者通过Qt的多线程机制(如QtConcurrent)创建的。这种情况下,当信号被触发时,Qt使用事件循环将信号传递到子窗体所属的线程执行相应的函数。这个过程涉及线程切换和事件传递的机制,确保函数在正确的线程执行。 无论窗体和子窗体是否共用同一个线程,Qt都提供了灵活的信号机制来实现跨线程的通信。通过Qt的线程间通信机制,我们可以在不同线程之间传递信号的参数,并确保线程安全。这使得在多线程应用程序实现复杂的交互成为可能。 综上所述,Qt窗体和子窗体信号可以共用同一个线程,也可以使用不同的线程,具体取决于应用程序的需求和设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值