3
我有一個QMainWindow
,它有一個QWidget
。出現QWidget
,並且其起點設置在QMainWindow
的鼠標向下事件中。然後,在QMainWindow
的鼠標移動事件中,設置了QWidget
的幾何圖形,以便看起來用戶正在QMainWindow
頂部繪製矩形。這是我如何做到這一點:使用Qt,如何使用鼠標移動事件向上或向左調整窗口小部件
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
的計算結果是否定的,所以窗口不能正確調整(或根本不調整)。
我意識到,向上/向左移動意味着我需要更改小部件的原點,同時通過根據需要增加寬度/高度來保持小部件的右下角位於同一位置,但是如何做這個?
謝謝!
謝謝,我會試試這個,當我回家並接受你的成功答案。 – sfw 2012-08-02 18:02:33
@sfw是否有效? – MrFox 2012-08-08 14:29:45
是的,它的確如此。謝謝。 – sfw 2012-08-09 21:21:12