我正在尝试使用自己的级联和磁贴定义来重载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(个体经营):
print self.width()
if len(self.windowList())&lt; 2:
返回
I = 0
对于self.windowList()中的窗口:
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
答案 0 :(得分:1)
每个窗口小部件都放在一个框架窗口小部件中,这是该窗口小部件的父窗口小部件。所以你需要移动并提升window.parentWidget()
但是不推荐使用类QWorkSpace
,而是应该使用QMdiArea
(其subWindowList
方法实际返回窗口列表而不是内部窗口小部件列表。)