使用QWorkspace级联

2024-09-22 16:29:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用我自己的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

^{pr2}$

Tags: 代码selfmovelen定义windowswindowwidth
1条回答
网友
1楼 · 发布于 2024-09-22 16:29:43

每个窗口小部件都放在一个框架小部件中,因此它是该小部件的父部件。所以你需要移动并提升window.parentWidget()

但是类QWorkSpace已被弃用,您应该使用QMdiArea(其subWindowList方法实际上返回窗口列表,而不是内部小部件列表)。在

相关问题 更多 >