我有一个QMainWindow
有一个QWidget
。出现QWidget
,并在 的鼠标按下事件中设置其原点QMainWindow
。然后,在 的鼠标移动事件中QMainWindow
,设置 的几何形状,以QWidget
使用户看起来正在在 的顶部绘制一个矩形QMainWindow
。这就是我的做法:
void MyQMainWindow::mousePressEvent(QMouseEvent * E) {
QPoint pos = e->pos();
myQWidget->setGeometry(pos.x(), pos.y(), 0, 0);
myQWidget->show();
}
void MyQMainWindow::mouseMoveEvent(QMouseEvent * e) {
QPoint pos = e->pos();
QPoint prv = myQWidget->pos();
int w = pos.x() - prv.x();
int h = pos.y() - prv.y();
myQWidget.setGeometry(prv.x(), prv.y(), w, h);
}
void MyQMainWindow::mouseReleaseEvent(QMouseEvent *) {
myQWidget.hide();
}
这种方法的问题在于,当我向上拖动鼠标时,或者在我单击的位置左侧。我对w
和的计算h
是负数,因此窗口没有正确调整大小(或根本没有调整)。
我意识到向上/向左移动意味着我需要更改小部件的原点,同时通过根据需要增加宽度/高度来保持它的右下角在同一个地方,但我该怎么做呢?
谢谢!