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. Linux QtアプリケーションがQtライブラリでクラッシュしました
- 2. QPointが(0,0)でない場合のQPainter :: drawImage
- 3. Qt/C++:QTableViewコンテキストメニューと情報を渡す
- 4. QtのQTransform回転機能の理解
- 5. Qt/C++:QTableViewの特定のセルでデータを取得する
- 6. マウスを中心にしたQt
- 7. QTウィジェットとQT GUI
- 8. Qt - 絶対ウィジェットとカーソル位置を決定する
- 9. QtオブジェクトのQtメモリ管理
- 10. QtクイックとQtのウィジェット
- 11. Qt for Symbian VS. Qt for MeeGo
- 12. Qt 4.7:ジェスチャーによるコンテキストメニューのトリガー
- 13. QT
- 14. Qt
- 15. QT
- 16. Qt 5.6不明なモジュール:Qt購入
- 17. 非QtアプリケーションのMacイベントループQtプラグイン
- 18. qtをqtクリエイターでインストールする
- 19. QtのグローバルメニューQtMenuBarを使ったQt
- 20. Windows上のQt CreatorでのQt Creatorで
- 21. Qt ::ドラッグアンドドロップイメージ
- 22. ウェブサービスqt
- 23. QT - マルチセレクト
- 24. qtスロットカリング
- 25. Qtユニットテスト
- 26. Qt - ポップアップメニュー
- 27. Qtデータベースインターフェイス
- 28. Qtマウスカーソルリセット
- 29. qtスレッドオプション
- 30. Qtアームリモートデバッグ