2010-10-26 216 views
0

我已經使用Qt Designer創建了兩個uis,將它們導入到我的腳本中,並使用setupUi()方法以正常方式設置它們。當點擊一個按鈕並執行適當的方法時,新的UI將被加載,但所有的舊窗口小部件和連接仍然存在。PyQt4:從其父母中刪除孩子

什麼是正確的方式來刪除連接,然後刪除所有的MainWindow的當前孩子,以便只有新的用戶界面的小部件和連接仍然存在?下面是我正在做的一個簡單的例子。

from PyQt4 import QtGui, QtCore 
from Models import * 
from Backward import Ui_Backward 
from Forward import Ui_Forward 

class MainWindow(QtGui.QMainWindow): 
    def __init__(self): 
    QtGui.QMainWindow.__init__(self, None) 

    self.move_forward() 

    def move_forward(self):  
    self.ui = Ui_Forward() 
    self.ui.setupUi(self) 
    self.connect(self.ui.Button, QtCore.SIGNAL('clicked()'), self.move_backward) 

    def move_backward(self):  
    self.ui = Ui_Backward() 
    self.ui.setupUi(self) 
    self.connect(self.ui.Button, QtCore.SIGNAL('clicked()'), self.move_forward) 

一旦Ui_Forward設置並按下按鈕,Ui_Backward設置正確,但所有來自Ui_Forward小部件仍處於兒童的主窗口的列表中。

回答

0

我試圖想象你的目標是在這裏。如果您嘗試實施嚮導式應用程序,其中屏幕顯示一組控件,然後使用向前和向後按鈕切換到另一個屏幕,則應嘗試使用QStackedWidget

A QStackedWidget將允許您定義一個或多個「頁面」並在它們之間切換。您可以獨立設計每個頁面,而無需(不一定)必須將控件從一個頁面移動到另一個頁面。

+0

我的應用程序有幾個不同的視圖,所以我試圖創建一個有組織的方式來在它們之間轉換。它看起來像QStackedWidget將工作爲我的目的與一點編輯,謝謝。 – 2010-10-27 04:18:38