qt 一个控件相对于父控件的坐标

1.概要

// 获取子控件相对于父控件的坐标
    QPoint childPosition = childButton->mapToParent(QPoint(0, 0));
    qDebug() << "Child widget position relative to parent:" << childPosition;

2.内容

在 Qt 框架中,如果你需要获取一个控件(子控件)相对于其父控件的坐标,可以使用 QWidget 类的 mapToParent 函数。这个函数会将子控件的局部坐标转换为父控件的坐标系统中的坐标。

以下是一个简单的示例,展示了如何获取一个子控件相对于其父控件的坐标:

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // 创建父控件
    QWidget parentWidget;
    parentWidget.setWindowTitle("Parent Widget");

    // 创建子控件
    QPushButton *childButton = new QPushButton("Child Button", &parentWidget);

    // 设置布局,使子控件显示在父控件中
    QVBoxLayout *layout = new QVBoxLayout(&parentWidget);
    layout->addWidget(childButton);
    parentWidget.setLayout(layout);

    // 显示父控件
    parentWidget.show();

    // 获取子控件相对于父控件的坐标
    QPoint childPosition = childButton->mapToParent(QPoint(0, 0));
    qDebug() << "Child widget position relative to parent:" << childPosition;

    return app.exec();
}

在这个示例中,我们创建了一个父控件 parentWidget 和一个子控件 childButton。子控件被添加到父控件的布局中。使用 mapToParent(QPoint(0, 0)) 函数,我们将子控件的左上角(局部坐标 (0, 0))转换为父控件坐标系中的坐标,并通过 qDebug() 输出这个坐标。

解释

  • QWidget::mapToParent(const QPoint &pos): 将控件的局部坐标 pos 转换为父控件的坐标。
  • QPoint(0, 0): 表示子控件的左上角。

这样,你就可以得到子控件在父控件中的相对位置。如果你需要其他位置的坐标,可以调整传递给 mapToParent 的 QPoint 参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值