Qt 窗口间通信

窗口间的通信是很常见的问题,针对于两者:父窗口和子窗口。(两个类是关联关系:一个类作为另外一个类的成员变量)又可以细分为父向子传和子向父传。

父—>子:

以一个简单的例子进行说明:


1.在父类中定义自类为成员变量Child *ch;show()或exec()启动子窗口

2.子类:定义signals:send(); 定义一个私有成员用于存储通信的内容,并给出get,set方法。

3.父类:定义 slots:receive();在构造函数中加入connect(ch,SIGNAL(send()),this,SLOT(receive()));

子—>父:

在子类中定义一个带参成员函数,在父类创建一个子类对象,调用其方法函数,将值传给参数变量。


两种情况的区别在于父类可以调用子类,而子类却无法调用父类。(因为在Qt中不支持两个类之间互为成员变量!!!)


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt窗口主线程通信是指在Qt程序中,窗口所在的主线程与其它线程通信的过程。Qt程序中通常会包含多个线程,而窗口往往位于主线程中,主要负责界面的更新和用户输入响应等任务。如果其它线程需要与窗口进行通信,便需要进行线程间通信(Inter-Thread Communication)。 Qt提供了多种线程间通信的方式,其中包括信号槽机制、事件机制和共享对象等,这些机制都可用于主线程与其它线程之间的通信。其中,信号槽机制是最常用的一种方式。主线程可以在窗口中定义信号(Signal),其它线程可以在需要通知窗口时触发该信号,主线程则通过槽(Slot)来接收信号并执行相应的操作。此外,也可以通过发送事件的方式来通信,其它线程可以通过调用窗口的postEvent()函数来发送事件,主线程则通过重载窗口的event()函数来接收事件并执行相应的操作。 为了确保线程安全,Qt提供了QMutex和QReadWriteLock等线程锁(Thread-Safe Mechanisms),可以在多线程读写共享资源时保护数据的一致性,避免出现数据并发访问的问题。在使用这些机制时,需要注意不要在主线程中执行耗时的操作,以免阻塞GUI界面的更新,导致程序“假死”。 综上所述,Qt窗口主线程通信是一种重要的线程间通信方式,通过合理使用信号槽机制、事件机制和线程锁等工具,可以实现主线程和其它线程之间的高效通信,提高程序的运行效率和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值