2016-01-27 111 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