c – 如何在Qt中拖动未修饰的窗口

我的窗户未修饰如下:

MainWindow::MainWindow(QWidget *parent) :
    QWidget(parent, Qt::FramelessWindowHint | Qt::WindowSystemMenuHint)
{}

我怎样才能让它变得可拖动?

最佳答案 由于您删除了窗口装饰以及窗口系统提供移动所需的任何访问点,因此您必须自己实现它.

您可以重新实现窗口的鼠标事件处理程序,也可以在窗口对象上使用事件过滤器.

分别参见QWidget :: mousePressEvent(),QWidget :: mouseMoveEvent(),QWidget :: mouseReleaseEvent()和QObject :: eventFilter().

而QWidget :: move()用于实际运动.

由于您已经有了派生类,因此实现事件处理程序可能是更直接的方法.

点赞