qt隐藏标题栏后怎么用鼠标改变widget大小
时间: 2023-05-19 21:00:45 浏览: 124
QT 隐藏标题栏后改变窗体大小
您可以通过在 QWidget 上实现 mousePressEvent、mouseMoveEvent 和 mouseReleaseEvent 事件来实现此功能。具体步骤如下:
1. 在 QWidget 的构造函数中设置窗口样式为 Qt::FramelessWindowHint,这将隐藏标题栏。
2. 实现 mousePressEvent 事件,记录下鼠标按下时的位置和窗口的位置。
3. 实现 mouseMoveEvent 事件,计算出鼠标移动的距离,并将窗口的位置移动相应的距离。
4. 实现 mouseReleaseEvent 事件,释放鼠标时停止移动窗口。
以下是示例代码:
```
class MyWidget : public QWidget
{
public:
MyWidget(QWidget *parent = nullptr) : QWidget(parent)
{
setWindowFlags(Qt::FramelessWindowHint);
}
protected:
void mousePressEvent(QMouseEvent *event) override
{
if (event->button() == Qt::LeftButton)
{
m_dragPos = event->globalPos() - frameGeometry().topLeft();
event->accept();
}
}
void mouseMoveEvent(QMouseEvent *event) override
{
if (event->buttons() & Qt::LeftButton)
{
move(event->globalPos() - m_dragPos);
event->accept();
}
}
void mouseReleaseEvent(QMouseEvent *event) override
{
if (event->button() == Qt::LeftButton)
{
event->accept();
}
}
private:
QPoint m_dragPos;
};
```
您可以将此代码添加到您的 QWidget 子类中,然后在您的应用程序中使用该子类来创建窗口。
阅读全文