5

グリッド レイアウトのメイン ウィンドウがあり、2 行に 8 つのボタンがあります。

 ---------------------
|                     | 
| 1     2     3     4 |
|                     | 
|                     |
| 5     6     7     8 |
|                     |
 ---------------------

クリックされたボタンの横にポップアップ ダイアログを表示しようとしています。だから、信号に接続されたスロットのボタンの座標を取得しようとしていますclicked()

私が試してみました

QPoint p = btn->pos();

QPoint p = btn->geometry().topLeft();

どちらも何らかの理由で (0, 0) です。このスロットでクリックされたボタンの位置を取得するにはどうすればよいですか?

ありがとう

4

1 に答える 1

8

親ウィンドウに対するボタンの位置をマップする必要があると思います。

QWidget::mapTo

ウィジェットの座標 pos を親の座標系に変換します。親は 0 であってはならず、呼び出し元のウィジェットの親でなければなりません。

于 2012-07-21T18:21:10.260 に答える