が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
が負であるため、ウィンドウのサイズが正しく(またはまったく)変更されません。
上/左に移動すると、必要に応じて幅/高さも増やしてウィジェットの右下隅を同じ場所に保ちながら、ウィジェットの原点を変更する必要があることを理解していますが、これを行うにはどうすればよいですか?
ありがとう!