独自のカスケードとタイル定義でQWorkspaceクラスをオーバーロードしようとしていますが、.move関数を使用しようとすると、ワークスペースに対してサブウィンドウを移動するのではなく、サブウィンドウに対して内部ウィジェットを移動します。
これが私が使用しているコードです:
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_()
これが最終的に私のために働いたコードです(特に'parent()'の追加に注意してください):class MdiArea(QWorkspace):def tile(self):print self.width()if len(self.windowList())< 2:self.windowList()のウィンドウに対してi = 0を返します:x = i * window.parent()。width()y = 5 window.parent()。move(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