QT 11 鼠標鍵盤事件添加


鼠標事件

 

    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;

···

}
}

  


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com