声明:void mouseMoveEvent(QMouseEvent * event);
定义:
void MainWindow::mouseMoveEvent(QMouseEvent * event)
{
bool left_state = false;
if (event->buttons() == Qt::LeftButton)***
{
left_state = true;
}
bool right_state = false;
if (event->buttons() == Qt::RightButton)
{
right_state = true;
}
}
运行时显示:在***处引发了异常: 读取访问权限冲突。 event 是 nullptr。
鼠标键拖动的判断一般放在mouseMoveEvent函数中,但是你不能向上例一样来判断,因为该函数的event参数总是返回Qt::NoButton。
void XXXWidget::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons() & Qt::LeftButton)
{
// todo ...
}
}
可以查看qt帮助文档,加深下理解,buuton返回触发这个事件的按钮 肯定只有一个,buttons返回事件产生时按下的按钮 可能不止一个
http://qt-project.org/doc/qt-5/qmouseevent.html#buttons