Tôi đang cố gắng thay đổi kích thước của phân lớp QPushButton trong khi neo một góc do người dùng xác định (không phải lúc nào cũng là góc trên cùng bên trái). QPushButton định nghĩa QFrame làm cha mẹ của nó, và được thả nổi tự do trong cửa sổ. Khi tôi cố gắng thay đổi kích thước của lớp con QPushButton trong mã lớp con, tôi tin rằng nó gây ra rắc rối cho tôi vì các điểm QPoint được cung cấp bởi mouseEvents là cục bộ. Tôi đã thử làm việc với myButton-> mapToGlobal (QPoint) và myButton-> mapFromGlobal nhưng tôi không nghĩ rằng tôi hoàn toàn hiểu cách chúng hoạt động. Một tìm kiếm cho các ví dụ đã để lại cho tôi bàn tay trắng. Bất cứ ai có thể cung cấp một ví dụ ngắn?Qt QPoint bản đồ toàn cầu/cục bộ
Trả lời
tọa độ cục bộ (widget) liên quan đến góc trên cùng bên trái của tiện ích. Tọa độ chung là tọa độ màn hình. Chúng dễ dàng chuyển đổi và các sự kiện như QMouseEvent cung cấp cả hai tọa độ cục bộ (pos()) và global (globalPos()). Nếu bạn muốn ánh xạ từ Widget A đến Widget B, bạn có thể làm
const QPoint global = a->mapToGlobal(localPosInA);
const QPoint localInB = b->mapFromGlobal(global);
Hoặc, ngắn hơn:
const QPoint localInB = a->mapTo(b, localPosInA);
Ví dụ: Giả sử bạn có một W1 phụ tùng top-level tại (100.110) (tọa độ màn hình), có phụ tùng con w2 tại (10,10) (tọa độ w1) và sự kiện chuột trong w2 tại (20, 20) (tọa độ w2), sau đó vị trí toàn cục của con trỏ chuột là
(100.110) + (10,10) + (20,20) = (130,140) (tọa độ màn hình)
Đó là w2-> mapToGlobal (mousePos).
w2-> mapTo (W1, mousePos) hoặc, như là W1 mẹ của W2, w2-> mapToParent (mousePos) là
(10,10) + (20,20) = (30,30) (tọa độ w1). Có thể dễ nhất là nếu bạn chuyển đổi mọi thứ thành tọa độ toàn cục, thực hiện các phép tính ở đó và sau đó ánh xạ kết quả trở lại tiện ích tức là ngữ cảnh bạn cần.
- 1. Công cụ lập bản đồ cho Qt
- 2. Toàn màn hình Bản đồ Google
- 3. Truyền an toàn cho bản đồ băm
- 4. Tạo biến bản đồ toàn cầu
- 5. Bản đồ giao dịch với Bản đồ đồng bộ
- 6. Toàn bộ Bản đồ có được sao chép khi chèn một ràng buộc mới không?
- 7. Làm nổi bật toàn bộ đường phố với một số bản đồ API
- 8. Android: Nhận bản đồ OSM xoay để điền vào toàn bộ màn hình
- 9. An toàn ngoại lệ trong Qt
- 10. Qt: không có tệp bản đồ/pdb nào được tạo cho bản dựng windows release
- 11. Tắt bộ chia Qt
- 12. DataAnnotations: Recursively xác nhận toàn bộ đồ thị đối tượng
- 13. Bản đồ Google Maps API v3 không tải hoàn toàn
- 14. Cấu trúc bản đồ có an toàn không?
- 15. Vim biến toàn cầu và người lập bản đồ
- 16. Lược đồ URL - Qt và mac
- 17. Widget biểu đồ cho GTK hoặc Qt
- 18. kết hợp các bản đồ thành một bản đồ các bộ giá trị với clojure
- 19. Quản lý bộ nhớ Qt cho các đối tượng Qt
- 20. Bản đồ STL trên bản thân?
- 21. Làm cách nào để thêm toàn bộ thư mục vào dự án tạo người tạo QT
- 22. Bản đồ bản đồ - cách giữ bản đồ bên trong làm bản đồ?
- 23. Đăng ký bản đồ bộ nhớ trong Python
- 24. Nhúng biểu đồ matplotlib vào ứng dụng Qt/C++
- 25. Tín hiệu Bản đồ Qt Dựa trên Giá trị Tham số
- 26. Bản đồ cấu trúc dữ liệu Bản đồ
- 27. Bản đồ + bản đồ choropleth trong R
- 28. Bản đồ sâu Bản đồ trong Groovy
- 29. Qt, Hộp thoại Bộ chọn Màu?
- 30. Không thể dán toàn bộ văn bản trong WPF textbox