【问题标题】:Communicate between two MainWindow() in Qt在 Qt 中的两个 MainWindow() 之间进行通信
【发布时间】:2016-05-04 15:52:14
【问题描述】:

我的应用程序在 Qt 中包含 2 个不同的窗口(但都继承自 QtGui.QMainWIndow),我想知道如何在它们之间进行通信。此外,使用多个 QMainWindow 通常是一个好方法吗?

【问题讨论】:

  • 你听说过 Qt 中的Signals and Slots 吗?
  • 是的,我经常用。我应该构建一个继承自 QApplication 的类,其 window1 和 window2(仍然从 QMainWindow 继承)是属性吗?总结一下,我正在寻找在 Qt 中处理多个窗口应用程序的最佳方法。
  • 信号/槽,或者创建一个知道所有主窗口并处理它们之间交互的类。

标签: python c++ qt pyqt


【解决方案1】:

在实例化两个窗口类时连接它们之间的信号和槽。

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)

    window1 = MyMainWindow1()
    window1.show()

    window2 = MyMainWindow2()
    window2.show()

    # connect signals to communicate between windows
    window1.someSignal.connect(window2.someSlot)
    window2.anotherSignal.connect(window1.anotherSlot)

    app.exec()

QMainWindow被设计用作主应用程序窗口;它简化了常用窗口功能(如工具栏和菜单)的添加。但是,我认为拥有多个实例没有任何害处。

你也可以直接使用 anyQWidget:

window = QtWidgets.QWidget()    # note that no parent is given
window.show()

【讨论】:

  • 这就是我所做的,但在继承自 QApplication 的上层类中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多