【发布时间】:2012-08-02 16:19:46
【问题描述】:
我有一个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 的计算为负数,因此窗口没有正确(或根本没有)调整大小。
我意识到向上/向左移动意味着我需要更改小部件的原点,同时通过根据需要增加宽度/高度来保持它的右下角在同一个位置,但我该怎么做这个?
谢谢!
【问题讨论】: