Qt中多个对话框之间的通信,使用信号和槽或引用

Posted

技术标签:

【中文标题】Qt中多个对话框之间的通信,使用信号和槽或引用【英文标题】:Communication between multiple dialogs in Qt, using signals and slots or references 【发布时间】:2014-07-29 08:36:42 【问题描述】:

我正在开发一个 Qt GUI 应用程序,在任何给定时间打开多个 QDialog。

当在单独的网络线程上接收到特殊数据时,这些对话框需要相互通信和通知。

通常,一个对话框将包含对至少另一个对话框的引用,因此可以使用它进行通信。

我的问题是,是使用此引用在另一个对话框中调用函数,还是发出信号并在另一个对话框的插槽中吸收该信号?我知道这可能是一种偏好 - 但我仍然想就此获得一些意见。

【问题讨论】:

【参考方案1】:

我建议您首先查看Qt's Model View Programming。基于Model View Controller design pattern,您最好将数据(模型)和该数据的视图分开。

如果您遵循 Qt 的模型视图编程,您会发现当包含您的数据的模型发生更改时,会通知视图并做出相应的反应。您不需要从一个对话框向另一个对话框发送消息。

【讨论】:

以上是关于Qt中多个对话框之间的通信,使用信号和槽或引用的主要内容,如果未能解决你的问题,请参考以下文章

Qt 6.x中的信号和槽介绍及示例

Qt 6.x中的信号和槽介绍及示例

QT中的信号与槽

QT信号和槽

Qt多线程程序设计中,可使用信号和槽进行线程通信

Qt之emitsignalsslot的使用