Qt intersects()函数返回值一直是True

使用intersects()函数检测两个按钮是否相交,一个按钮是移动的,如果发生碰撞就停止移动,但是总是返回true值,两个按钮的位置坐标是不同的.不知是哪里的问题

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    btnPos_X=ui->pushButton_2->x();

    qDebug()<<ui->pushButton_2->rect().intersects(ui->pushButton->rect());//一直返回true
    
    ui->pushButton->
}

Widget::~Widget()
{
    delete ui;
}

void Widget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    if(!ui->pushButton_2->rect().intersects(ui->pushButton->rect())){
        ui->pushButton_2->move(btnPos_X,ui->pushButton_2->y());
        btnPos_X-=1;
    }
    update();

}



你对rect()的理解有错误,看一下文档就知道这个函数返回的是QRect(0, 0, width(), height()),而不是这个控件在父控件的坐标
这边你应该使用的是geometry()