qt去掉widget边框后,怎么实现拖拽边框缩放窗口
时间: 2023-03-31 16:01:47 浏览: 181
您可以在QWidget的mousePressEvent、mouseMoveEvent和mouseReleaseEvent事件中实现拖拽边框缩放窗口的功能。具体实现方法可以参考以下代码:
void YourWidget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
m_isResizing = true;
m_lastPos = event->pos();
}
}
void YourWidget::mouseMoveEvent(QMouseEvent *event)
{
if (m_isResizing) {
QPoint delta = event->pos() - m_lastPos;
QSize newSize = size() + QSize(delta.x(), delta.y());
setFixedSize(newSize);
m_lastPos = event->pos();
}
}
void YourWidget::mouseReleaseEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
m_isResizing = false;
}
}
其中,m_isResizing是一个bool类型的变量,用于标记当前是否正在拖拽边框。m_lastPos是一个QPoint类型的变量,用于记录上一次鼠标的位置。在mousePressEvent事件中,当鼠标左键按下时,将m_isResizing设置为true,并记录当前鼠标的位置。在mouseMoveEvent事件中,当m_isResizing为true时,计算鼠标移动的距离,根据距离调整窗口大小,并更新m_lastPos的值。在mouseReleaseEvent事件中,当鼠标左键释放时,将m_isResizing设置为false。
阅读全文