2
我試圖用我自己的級聯和tile定義重載QWorkspace類,但是當我嘗試使用.move函數時,它將相對於子窗口移動內部窗口小部件,而不是移動子窗口相對到工作區。使用QWorkspace級聯
這裏是我使用的代碼:
class MdiArea(QWorkspace):
def tile(self):
if len(self.windowList()) < 2:
return
def cascade(self):
if len(self.windowList()) < 2:
return
windows = []
for window in self.windowList():
windows.append((window.width(), window.height(), window))
windows.sort()
#
x = 0
y = 0
endX = self.width() - min(windows[-1][0], self.width())
endY = self.height() - min(windows[-1][1], self.height())
for i in range(len(windows)):
x = i * 10
y = i * 10
width, height, window = windows[i]
window.move(x, y)
window.raise_()
下面是最終爲我工作的代碼(注意 '父()' 特別增加): 類MdiArea(QWorkspace): DEF瓦片(個體):如果len 打印self.width() (self.windowList())< 2: 返回 I = 0 用於self.windowList()窗口: X = I * window.parent ().width() y = 5 wind ow.parent()。移動(X,Y) window.parent()。raise_()
I = I + 1
def cascade(self):
if len(self.windowList()) < 2:
return
i=0
for window in self.windowList():
x = i * 15
y = i * 30
window.parent().move(x, y)
window.parent().raise_()
i=i+1
這就是我所錯過的。我正在更新該程序,因此,撕掉所有QWorkspace代碼並放入QMdiArea將會太耗時。 – Stephen 2012-04-12 15:29:30