2016-01-27 155 views
0

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

+0

你听说过[信号和槽在QT(http://doc.qt.io/qt-4.8/signalsandslots.html)的? –

+0

是的,我经常使用它。我应该建立一个继承自QApplication的类,它的window1和window2(仍然继承自QMainWindow)是属性吗?总而言之,我正在寻找处理Qt中多个Windows应用程序的最佳方式。 – floflo29

+0

Signal/slots,或创建一个知道所有主窗口并处理它们之间交互的类。 –

回答

2

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

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

您也可以只使用任何QWidget

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

这就是我所做的,但在从QApplication继承的上层类中。 – floflo29