qt鼠標事件所包含的頭文件<QMouseEvent>,QMouseEvent中包含了兩個坐標,一是全局坐標(globalPos()),即桌面坐標,這個跟Windows下的調用的getCursorPos函數得到的結果一致。
鼠標事件常見的有mousePressEvent(),mouseReleaseEvent(),mouseDoubleClickEvent(),mouseMoveEvent(),下面我就貼上幾段代碼吧
void Event_test::mouseMoveEvent(QMouseEvent *event) //鼠標拖動事件
{
QPoint point;
point = QCursor::pos();
qDebug()<<"point"<<point.x()<<" "<<point.y();
qDebug()<<"move :"<<" "<<event->pos().x()<<" "<<event->pos().y();
}
void Event_test::mousePressEvent(QMouseEvent *event) //鼠標按下事件
{
QString str="("+QString::number(event->x())+","+QString::number(event->y())+")";
if(event->button()==Qt::LeftButton)
{
statusBar()->showMessage (tr("Mouse Left Button Pressed:")+str);//在狀態欄中顯示臨時信息
}
else if(event->button()==Qt::RightButton)
{
statusBar()->showMessage (tr("Mouse Right Button Pressed:")+str);
}
else if(event->button()==Qt::MidButton)
{
statusBar()->showMessage (tr("Mouse Middle Button Pressed:")+str);
}
qDebug()<<"Press "<<" "<<event->pos().x()<<" "<<event->pos().y();
}
void Event_test::mouseReleaseEvent(QMouseEvent *event) //鼠標釋放事件
{
QString str="("+QString::number(event->x())+","+QString::number(event->y())+")";
statusBar()->showMessage (tr("Mouser Released:")+str,3000);
qDebug()<<"release "<<" "<<event->pos().x()<<" "<<event->pos().y();
}
void Event_test::mouseDoubleClickEvent(QMouseEvent *event) //鼠標雙擊事件
{
QString str="("+QString::number(event->x())+","+QString::number(event->y())+")";
if(event->button()==Qt::LeftButton)
{
statusBar()->showMessage (tr("Mouse Left Button Double Clicked:")+str);
}
else if(event->button()==Qt::RightButton)
{
statusBar()->showMessage (tr("Mouse Right Button Double Clicked:")+str);
}
else if(event->button()==Qt::MidButton)
{
statusBar()->showMessage (tr("Mouse Middle Button Double Clicked:")+str);
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。