如果不进行任何设置,鼠标点击在控件上的时候,if语句是进不去的,因为鼠标事件被控件响应了,所以为了不让控件响应它的鼠标事件,只需设置一下属性就行。
方法:btn->setAttribute(Qt::WA_TransparentForMouseEvents, true);
void Widget::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
qDebug()<<event->pos();
qDebug()<<btn->pos();
event->accept();
}
if(event->button() == Qt::RightButton)
{
close();
}
}
Qt::WA_TransparentForMouseEvents 解释:启用后,此属性将禁用向小部件及其子部件传递鼠标事件。 鼠标事件会传递到其他窗口小部件,就好像窗口小部件及其子级未出现在窗口小部件层次结构中一样。 鼠标单击和其他事件可以有效地“通过”它们。 默认情况下禁用此属性。
通俗点就是控件不接收鼠标事件,点击控件的时候是控件后面的窗口接收鼠标事件。