当前位置: 首页> 娱乐> 八卦 > 上海公司注销流程及资料_品牌设计法则_深圳外贸网络推广_哈尔滨seo关键词优化

上海公司注销流程及资料_品牌设计法则_深圳外贸网络推广_哈尔滨seo关键词优化

时间:2025/7/19 14:33:18来源:https://blog.csdn.net/weixin_43297891/article/details/144360009 浏览次数:0次
上海公司注销流程及资料_品牌设计法则_深圳外贸网络推广_哈尔滨seo关键词优化

qt-C++语法笔记之mapToGlobal将组件(控件)中的本地坐标系(局部坐标)映射到全局坐标系

code review!

文章目录

  • qt-C++语法笔记之mapToGlobal将组件(控件)中的本地坐标系(局部坐标)映射到全局坐标系
      • 1.所属的类和作用
        • 1.1.方法签名
        • 1.2.参数
        • 1.3.返回值
      • 2.坐标系的概念
      • 3.使用案例
        • 3.1.示例代码
        • 3.2.输出结果
      • 4.和其他方法的区别
        • 4.1.区别总结:
      • 5.注意事项
      • 6.实际应用场景
      • 7.总结

mapToGlobal 是一个常见于 GUI 框架(例如 Qt)的方法,用于将组件(控件)中的本地坐标系(局部坐标)映射到全局坐标系。它的主要作用是将局部坐标(以组件左上角为原点的坐标系)转换为屏幕上的全局坐标。

以下是对 mapToGlobal 方法的详细解释:

1.所属的类和作用

在 Qt 中,mapToGlobalQWidget 类的一个函数,主要用于将控件的局部坐标(local coordinates)映射到屏幕上的全局坐标(global coordinates,通常是以屏幕左上角为原点的坐标系)。

1.1.方法签名
QPoint QWidget::mapToGlobal(const QPoint &pos) const
1.2.参数
  • pos:一个 QPoint 类型的点,表示控件局部坐标系中的点。
1.3.返回值
  • 返回一个 QPoint,表示该点在屏幕上的全局坐标。

2.坐标系的概念

在 GUI 编程中,通常有以下几种坐标系:

1.局部坐标系(Local Coordinates)

  • 以控件的左上角为原点 (0, 0),控件的大小决定了这个坐标系的范围。
  • 比如,一个按钮的局部坐标系以按钮自身的左上角为原点。

2.父坐标系(Parent Coordinates)

  • 以控件的父控件的左上角为原点。

3.全局坐标系(Global Coordinates)

  • 以整个屏幕的左上角为原点 (0, 0),无论控件嵌套层级如何,最终都会映射到屏幕上的绝对位置。

3.使用案例

假设我们有一个按钮,它位于窗口中的局部坐标 (50, 30),而这个窗口本身在屏幕上的位置是 (300, 200),那么:

  • 局部坐标(50, 30) 是相对于按钮的父控件(窗口)的坐标。
  • 全局坐标:通过 mapToGlobal 转换后,这个点在屏幕上的绝对位置应该是 (300 + 50, 200 + 30) = (350, 230)
3.1.示例代码

以下是一个简单的 Qt 示例:

#include <QApplication>
#include <QPushButton>
#include <QDebug>int main(int argc, char *argv[])
{QApplication app(argc, argv);QWidget window;window.setGeometry(300, 200, 400, 300); // 设置窗口的位置和大小QPushButton button("Click Me", &window);button.setGeometry(50, 30, 100, 50); // 设置按钮的位置和大小window.show();// 将按钮的局部坐标 (10, 10) 转换为全局坐标QPoint localPoint(10, 10);QPoint globalPoint = button.mapToGlobal(localPoint);qDebug() << "Local Point:" << localPoint;  // 输出 (10, 10)qDebug() << "Global Point:" << globalPoint; // 输出屏幕上的全局位置return app.exec();
}

运行
在这里插入图片描述

3.2.输出结果

假设窗口的左上角起点是 (300, 200),按钮的位置是 (50, 30),则局部坐标 (10, 10) 对应的全局坐标是:

Local Point: QPoint(10, 10)
Global Point: QPoint(360, 240)

4.和其他方法的区别

Qt 提供了一些相关的方法,用于坐标系之间的转换:

  • mapFromGlobal

  • 将全局坐标转换为控件的局部坐标。

  • 签名:QPoint QWidget::mapFromGlobal(const QPoint &pos) const

  • mapToParent

  • 将控件的局部坐标转换为父控件的坐标。

  • 签名:QPoint QWidget::mapToParent(const QPoint &pos) const

  • mapFromParent

  • 将父控件的坐标转换为控件的局部坐标。

  • 签名:QPoint QWidget::mapFromParent(const QPoint &pos) const

4.1.区别总结:
方法功能说明
mapToGlobal局部坐标 → 全局坐标
mapFromGlobal全局坐标 → 局部坐标
mapToParent局部坐标 → 父控件坐标
mapFromParent父控件坐标 → 局部坐标

5.注意事项

1.嵌套控件的影响

  • 如果控件嵌套在多个层级中,mapToGlobal 会自动递归地将局部坐标转换到屏幕的全局坐标。

2.坐标有效性

  • 如果控件尚未显示在屏幕上(例如窗口未显示),全局坐标可能不准确。

3.高 DPI 支持

  • 在高 DPI 屏幕中,可能需要考虑像素缩放比例(devicePixelRatio),以确保坐标转换的正确性。

6.实际应用场景

mapToGlobal 在 GUI 程序中非常常用,尤其是在以下场景中:

1.显示上下文菜单

  • 在控件的某个局部位置显示上下文菜单时,需要将该位置转换为全局坐标。
QPoint globalPos = button->mapToGlobal(QPoint(0, button->height()));
menu->exec(globalPos); // 在按钮底部显示菜单

2.鼠标事件处理

  • 将鼠标点击的局部坐标转换为全局坐标,以便与其他控件或屏幕交互。

3.窗口定位

  • 将控件的某个局部位置转换为全局坐标,用于精确定位弹出窗口或提示框。

7.总结

mapToGlobal 是 GUI 编程中处理坐标转换的重要工具,能够帮助开发者将局部坐标映射到全局坐标,从而实现精确的界面定位和交互功能。了解它的工作机制以及与其他坐标转换方法的区别,是高效开发 GUI 程序的基础。

关键字:上海公司注销流程及资料_品牌设计法则_深圳外贸网络推广_哈尔滨seo关键词优化

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: