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

Pro*_*Rev 5 c++ qt

我已按如下方式取消装饰我的窗户:

MainWindow::MainWindow(QWidget *parent) :
    QWidget(parent, Qt::FramelessWindowHint | Qt::WindowSystemMenuHint)
{}
Run Code Online (Sandbox Code Playgroud)

我怎样才能使它可拖动?

Kev*_*mer 3

由于您删除了窗口装饰以及窗口系统用于提供移动的任何访问点,因此您必须自己实现它。

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

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

当然QWidget::move()还有实际的运动。

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