void mousePressEvent(QMouseEvent *event); //單擊
void mouseReleaseEvent(QMouseEvent *event); //釋放
void mouseDoubleClickEvent(QMouseEvent *event); //雙擊
void mouseMoveEvent(QMouseEvent *event); //移動
void wheelEvent(QWheelEvent *event); //滑輪
鼠標事件使用的時候,加頭文件
#include <QMouseEvent>
···
// 鼠標按下事件
void Widget::mousePressEvent(QMouseEvent *event)
{
// 如果是鼠標左鍵按下 改變指針形狀,並且存儲當前指針位置與窗口位置的差值。
if(event->button() == Qt::LeftButton){
···
}
// 如果是鼠標右鍵按下
else if(event->button() == Qt::RightButton){
···
}
}
// 鼠標移動事件 默認情況下,觸發事件需要點擊一下,才能觸發。可設置為自動觸發:setMouseTracking(true);
void Widget::mouseMoveEvent(QMouseEvent *event)
{
// 這里必須使用buttons()
if(event->buttons() & Qt::LeftButton){ //進行的按位與
···
}
}
// 鼠標釋放事件
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
···
}
// 鼠標雙擊事件
void Widget::mouseDoubleClickEvent(QMouseEvent *event)
{
// 如果是鼠標左鍵按下
if(event->button() == Qt::LeftButton){
···
}
}
// 滾輪事件
void Widget::wheelEvent(QWheelEvent *event)
{
// 當滾輪遠離使用者時
if(event->delta() > 0){
···
}else{//當滾輪向使用者方向旋轉時
···
}
}
void keyPressEvent(QKeyEvent *event);
void keyReleaseEvent(QKeyEvent *event);
鍵盤事件使用時,加頭文件
#include <QKeyEvent>
// 鍵盤按下事件
void Widget::keyPressEvent(QKeyEvent *event)
{
// 是否按下Ctrl鍵 特殊按鍵
if(event->modifiers() == Qt::ControlModifier){
// 是否按下M鍵 普通按鍵 類似
if(event->key() == Qt::Key_M)
···
}
else QWidget::keyPressEvent(event); //保存默認事件
//如果是處理兩個普通按鍵,得避免自動重復,釋放中也要處理
if(event->key() == Qt::Key_Up){
// 按鍵重復時不做處理
if(event->isAutoRepeat()) return;
// 標記向上方向鍵已經按下
keyUp = true;
}else if(event->key() == Qt::Key_Left){
if(event->isAutoRepeat()) return;
keyLeft = true;
}
}
// 按鍵釋放事件
void Widget::keyReleaseEvent(QKeyEvent *event)
{
···
//如果是處理兩個普通按鍵,得避免自動重復
if(event->key() == Qt::Key_Up){
if(event->isAutoRepeat()) return;
···
}
else if(event->key() == Qt::Key_Left){
if(event->isAutoRepeat()) return;
···
}
}
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。