我试图用我自己的cascade和tile定义重载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()”):
类MdiArea(QWorkspace):
定义图块(自身):
打印自身宽度()
如果len(自身窗口列表())<;2:
返回
i=0
用于窗口输入自身窗口列表():
x=i*窗口.父级().宽度()
y=5
窗口.父级().移动(x,y)
窗口.父级().提高\()
i=i+1
每个窗口小部件都放在一个框架小部件中,因此它是该小部件的父部件。所以你需要移动并提升
window.parentWidget()
但是类
QWorkSpace
已被弃用,您应该使用QMdiArea
(其subWindowList
方法实际上返回窗口列表,而不是内部小部件列表)。在相关问题 更多 >
编程相关推荐