1

ウィジェットの移動に関するドキュメントを検索して読んでいますが、それでも良い例を探しています。

ホットキーで表示するウィジェットがあり、メインウィンドウの中央ではなく別の場所にポップアップ表示したいと思います。move()を使用すると、親ウィンドウの位置が変わっても、ウィジェットはその位置に留まります。親ウィジェットを移動するときに相対位置にとどまるように、ウィジェットを親ウィジェット内の場所に配置したいと思います。どうすればこれを行うことができますか?

MapToParentについて読みましたが、使い方がわかりません。私は試した:

QPoint fD_p = fDialog->pos();
QPoint parent_fD_p = QWidget::mapToParent(fD_p);
fDialog->move(parent_fD_p);
4

1 に答える 1

2

親ウィジェットでmoveイベントハンドラーを再実装し、 void QWidget::moveEvent ( QMoveEvent * event )おそらくサイズ変更イベントハンドラーを再実装する必要があります。

これらのイベントハンドラーでは、ウィジェットの新しい位置を再計算してから移動できます。

mapToParentおよびmapFromParentメソッドは相対座標を変換します。ドキュメントから:

QPoint QWidget::mapFromParent ( const QPoint & pos ) const
Translates the parent widget coordinate pos to widget coordinates.

Same as mapFromGlobal() if the widget has no parent.
于 2013-03-06T07:59:14.977 に答える