首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Qt|模式窗口外部消息调用注意事项

窗口有模式、非模式两种风格,在使用这两种不同类型窗口时,需要注意这样一个问题:发送消息不响应问题。

定义一个消息:

假设现在你的窗口中有这样一个消息,需要发送,只要是在窗口内部自消化处理的,就没有问题。

比如说下面的形式:

这种窗口内部自消化的方式,一般用于窗口中开启线程,需要主窗口进行数据刷新使用。

当该窗口作为子窗口被创建时,并且上面定义的消息,需要在父窗口中做出响应,这时,就要区分模式窗口与非模式窗口的不同了。

非模式窗口创建:

只要写上connet消息,QMyWidget窗口的消息就可以被父窗口调用,此时,是不用区分是在show()之前,还是之后的。

当我们创建模式窗口,并将子窗口信息发送给父窗口时,此刻,就需要注意了!

首先,看下面这段代码:

大家可以使用测试代码调试下,这种方式,该消息(Msg_SendShowContent)是无法被相应的!

该函数会阻塞主线程,等待窗口处理完成后才会执行后面的内容,假设我们在写程序时,将connect消息放到了exec后面,是无法相应的。

这种错误一般会出现在新手使用模式窗口时发生的,在不知道为什么错的情况下,肯定会有这样的思路:

1:为什么无法响应?难道是因为采用的局部变量?离开该函数后就无法响应了呢?

2:是不是因为消息写的不正确?

当我们对exec和connect两句代码的位置互换后,如下面格式:

这种格式的代码消息才会被正常响应。

好了,今天的内容更新到这里喽,这也是新手最容易出现的问题,大家引起注意就行啦~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230101A07H3W00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券