如何令qdialog可以拖拽
时间: 2024-02-09 11:11:44 浏览: 289
自定义标题栏可缩放的QDialog
要让QDialog可以拖拽,需要做以下几步:
1.在QDialog的构造函数中设置Qt::Window属性,使其变成一个窗口。
2.在mousePressEvent中记录鼠标按下的位置。
3.在mouseMoveEvent中计算鼠标移动的距离,并将窗口移动到新的位置。
下面是示例代码:
```cpp
class MyDialog : public QDialog
{
public:
MyDialog(QWidget *parent = nullptr) : QDialog(parent)
{
setWindowFlags(Qt::Window);
}
protected:
void mousePressEvent(QMouseEvent *event) override
{
if (event->button() == Qt::LeftButton)
{
m_dragPosition = event->globalPos() - frameGeometry().topLeft();
event->accept();
}
}
void mouseMoveEvent(QMouseEvent *event) override
{
if (event->buttons() & Qt::LeftButton)
{
move(event->globalPos() - m_dragPosition);
event->accept();
}
}
private:
QPoint m_dragPosition;
};
```
在上面的代码中,我们记录了鼠标按下的位置,然后在鼠标移动事件中计算鼠标移动的距离,并将窗口移动到新的位置。这样,就可以让QDialog可以拖拽了。
阅读全文