在PyQt中,如何通过空白控件区域拖动/移动窗口?

2 投票
2 回答
1812 浏览
提问于 2025-04-17 17:14

主要的Qt应用程序,以及我所知道的大多数KDE应用程序,允许你不仅通过标题栏来拖动窗口,还可以通过窗口上的任何空白区域来拖动。不过,像这样的基本Pyqt应用似乎不支持这种功能:

from PyQt4.QtGui import *
import sys

a = QApplication(sys.argv)
w = QWidget()
w.show()
sys.exit(a.exec_())

我想要实现的是通过窗口里的控件来拖动窗口。我找到了一些相关的StackOverflow问题和答案,但那些方法并没有使用窗口管理器来真正移动窗口,这样做有两个问题:(1)和其他应用不一样,(2)效果也没有窗口管理器处理的好看。

所以我的问题是,我漏掉了什么?我该怎么做才能把未使用的点击/拖动事件传递给窗口管理器,以便移动窗口呢?

2 个回答

0

请注意,这是KDE的一个功能,主要在Oxygen和Breeze这两种小部件样式中实现。

1

原来,要让一个窗口可以通过它的额外空间来拖动,你需要让这个窗口继承自QMainWindow或QDialog,而不仅仅是QWidget。就是这么简单。

撰写回答