我试图在锚定用户定义的角落(并非总是左上角)时更改QPushButton子类的维度。 QPushButton定义了一个QFrame作为它的父对象,并且在窗口中自由浮动。当我尝试在子类代码中更改QPushButton子类的大小时,我相信它给我带来麻烦,因为mouseEvents提供的QPoint是本地的。 我试图使用myButton-> mapToGlobal(QPoint)和myButton-> mapFromGlobal,但我不认为我完全理解它们的工作方式。搜索例子让我空手而归。任何人都可以提供简单的例子吗Qt QPoint全局/本地映射
5
A
回答
12
本地(窗口小部件)坐标相对于窗口小部件的左上角。全局坐标是屏幕坐标。它们很容易转换,像QMouseEvent这样的事件同时提供本地(pos())和全局(globalPos())坐标。 如果你想从窗口小部件的地图窗口小部件B,你可以做
const QPoint global = a->mapToGlobal(localPosInA);
const QPoint localInB = b->mapFromGlobal(global);
或者更短:
const QPoint localInB = a->mapTo(b, localPosInA);
示例:假设你有一个顶级窗口部件W1(100,110) (屏幕坐标),其具有在(10,10)(w1坐标)处的子部件w2和在(20,20)(w2坐标)处的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. 全局覆盖映射
- 2. Spring MVC 3全局请求映射
- 3. 全局范围映射的Javascript方法
- 4. 为什么我的全局变量在本地声明之前被映射?
- 5. 安全地转换为哈希映射
- 6. 映射按键事件qt
- 7. Qt的映射构件
- 8. Qt和JavaScript映射数据
- 9. 抓取完全的对象与Hibernate映射为本地查询
- 10. 本地和全局变量
- 11. 全局和本地导入
- 12. Jinja2:本地/全局变量
- 13. 全局属性本地化
- 14. 全局本地化验证
- 15. 全局和本地Python
- 16. AutoMapper映射在本地定义映射时随机失败
- 17. 本地和全局变量的地址
- 18. C++/Qt全局热键
- 19. SpriteKit局部纹理映射
- 20. 页面映射布局
- 21. 在Nhibernate中映射本地化表格
- 22. GetAsyncKeyState:如何映射到本地键盘?
- 23. 本地化的流利的NHibernate映射
- 24. 如何在本地映射RDD?
- 25. 映射到本地SQL查询
- 26. MySQL:UTC自动映射到本地时区
- 27. 热映射地雷
- 28. 弹簧安全映射
- 29. C++线程安全映射
- 30. Tomcat安全角色映射