QPushButtonサブクラスのディメンションを変更する際に、ユーザー定義のコーナーを固定します(必ずしも左上隅ではありません)。 QPushButtonは、その親としてQFrameを定義し、ウィンドウ内でフリーフローティングです。私がサブクラスコードのQPushButtonサブクラスのサイズを変更しようとすると、mouseEventsによって提供されるQPointがローカルなので、問題が起こっていると思います。 私はmyButton-> mapToGlobal(QPoint)とmyButton-> mapFromGlobalを使って作業しようとしましたが、どういう仕組みか分かりません。例を探すと、私は空になってしまいました。誰かが簡単な例を提供できますか?Qt QPointグローバル/ローカルマッピング
5
A
答えて
12
ローカル(ウィジェット)の座標は、ウィジェットの左上隅を基準にしています。グローバル座標は画面座標です。それらは簡単に変換可能で、QMouseEventのようなイベントは、ローカル(pos())とグローバル(globalPos())の両方の座標を提供します。
const QPoint localInB = a->mapTo(b, localPosInA);
例:あなたはでトップレベルのウィジェットW1を持っていると言う(100110)あなたはBをウィジェットにウィジェットAからマップする場合 、あなたが短く、
const QPoint global = a->mapToGlobal(localPosInA);
const QPoint localInB = b->mapFromGlobal(global);
行うか、どちらか(10,10)(w1座標)に子ウィジェットw2を、w2に(20,20)(w2座標)にマウスイベントがある場合、マウスカーソルのグローバル位置は
です(100,110)+(10,10)+(20,20)=(130,140)(画面座標)
これはw2-> mapToGlobal(mousePos)です。
W2-> mapTo(W1、mousePos)又は、W1はW2の親であるように、W2-> mapToParent(mousePos)は
(10,10)+(20,20)=(30,30あります)(w1座標)。
すべてをグローバル座標に変換して計算し、その結果をウィジェット、つまり必要なコンテキストにマップするのが最も簡単かもしれません。
関連する問題
- 1. QTファイルに保存する方法QPoint 2dアレイ
- 2. QPointが(0,0)でない場合のQPainter :: drawImage
- 3. Linux QtアプリケーションがQtライブラリでクラッシュしました
- 4. "QPainter :: drawRects:Painter not active"エラーC++/QT
- 5. Qt tcpソケットでQt GUIを変更しますか?
- 6. Qt/C++:QTableViewコンテキストメニューと情報を渡す
- 7. QTリファレンスドキュメントの標準表記
- 8. のQt 5でrecenterはQT/QML地図
- 9. QtのQTransform回転機能の理解
- 10. Qt 3Dウィンドウのマウスコントロール
- 11. Qt/C++:QTableViewの特定のセルでデータを取得する
- 12. マウスを中心にしたQt
- 13. QTでQDialogを中央に配置する方法は?
- 14. QTウィジェットとQT GUI
- 15. Qtのウィンドウの中央にプログラムでQWidgetを設定するには?
- 16. Qt - 絶対ウィジェットとカーソル位置を決定する
- 17. Qt for Symbian VS. Qt for MeeGo
- 18. QtクイックとQtのウィジェット
- 19. QtオブジェクトのQtメモリ管理
- 20. Qt 4.7:ジェスチャーによるコンテキストメニューのトリガー
- 21. QT
- 22. QT
- 23. Qt
- 24. QT
- 25. Qt
- 26. Qtでカスタムタイトルバーを作成したい
- 27. 非QtアプリケーションのMacイベントループQtプラグイン
- 28. QtソースツリーからQtツールをコンパイルする
- 29. qtをqtクリエイターでインストールする
- 30. Windows上のQt CreatorでのQt Creatorで