使用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()