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

最佳答案

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

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设计用作主应用程序窗口;它简化了常用窗口功能(如工具栏和菜单)的添加。但是,我认为拥有多个实例不会有任何危害。

您也可以只使用any QWidget

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

08-19 21:46