Qt程式設計獲取滑鼠移動事件
想做下面一個效果:想當滑鼠移動到按鈕上的時候,按鈕就變大,圖示換個大的,滑鼠不在按鈕上的時候,按鈕就變小,圖示也換成小的,感覺比較Cool
實現原理:為每個按鈕設定監聽屬性
void MainHomeForm::init()
{
//為按鈕註冊事件
ui->SystemSetButton->installEventFilter(this);
ui->ZoneSetButton->installEventFilter(this);
}
//系統監聽器監聽按鈕物件
bool MainHomeForm::eventFilter(QObject *target, QEvent *e)
{
if(target == ui->SystemSetButton)
{
if(e->type() == QEvent::Enter)
{
ui->SystemSetButton->resize(163,91);
QIcon *MouseOnIcon = new QIcon(":/new/prefix1/back/系統設定2.png");
ui->SystemSetButton->setIcon(*MouseOnIcon);
}
else if(e->type() == QEvent::Leave)
{
ui->SystemSetButton->resize(115,60);
QIcon *MouseOffIcon = new QIcon(":/new/prefix1/back/系統設定.png");
ui->SystemSetButton->setIcon(*MouseOffIcon);
}
}
else if(target == ui->ZoneSetButton)
{
if(e->type() == QEvent::Enter)
{
ui->ZoneSetButton->resize(163,91);
QIcon *MouseOnIcon = new QIcon(":/new/prefix1/back/區域控制2.png");
ui->ZoneSetButton->setIcon(*MouseOnIcon);
}
else if(e->type() == QEvent::Leave)
{
ui->ZoneSetButton->resize(115,60);
QIcon *MouseOffIcon = new QIcon(":/new/prefix1/back/區域控制.png");
ui->ZoneSetButton->setIcon(*MouseOffIcon);
}
}
}
搞定,首先繫結按鈕的installEventFilter為當前窗體,在窗體的EventFilter事件中,看移到了哪個按鈕上面,就可以了。
還有一種就是,當滑鼠按下去的時候,移動到按鈕上面才會有變化:
//跟蹤滑鼠移動事件,當滑鼠移動到中間的按鈕上時,改變圖示大小和內容
void MainHomeForm::mouseMoveEvent(QMouseEvent *e)
{
e->accept();
if(enterBtn(e->pos(),ui->SystemSetButton))
{
ui->SystemSetButton->setSizeIncrement(163,91);
QIcon *MouseOnIcon = new QIcon(":/new/prefix1/back/系統設定2.png");
ui->SystemSetButton->setIcon(*MouseOnIcon);
}
}
//自己寫的函式,判斷滑鼠是否在一個按鈕區域內
bool MainHomeForm::enterBtn(QPoint pp, QToolButton *btn)
{
int height = btn->height();
int width = btn->width();
QPoint btnMinPos = btn->pos();
QPoint btnMaxPos = btn->pos();
btnMaxPos.setX(btn->pos().x()+width);
btnMaxPos.setY(btn->pos().y()+height);
if(pp.x() >= btnMinPos.x() && pp.y() >= btnMinPos.y()
&& pp.x() <= btnMaxPos.x() && pp.y() <= btnMaxPos.y())
return true;
else
return false;
}
相關文章
- Qt 獲取程式編譯時間QT編譯
- 事件驅動程式設計事件程式設計
- 程式設計師如何獲取新程式設計技能程式設計師
- Vue中使用MouseMove事件 獲取滑鼠座標頻率降低或事件卡頓Vue事件
- JQuery獲取滑鼠位置jQuery
- 透過滑鼠事件獲取滑鼠位置在3d中的座標mouse/Raycaster事件3DAST
- qt 獲取設定好的環境變數QT變數
- 滑鼠滑動獲取絕對座標方法 jqueryjQuery
- JavaScript獲取滑鼠座標JavaScript
- JavaScript高階程式設計筆記 事件冒泡和事件捕獲JavaScript程式設計筆記事件
- 程式設計師獲取程式設計靈感的 10 種方式程式設計師
- 程式設計師獲取新程式設計技能的5個技巧?程式設計師
- 獲取LOV事件事件
- javascript獲取移動裝置螢幕尺寸的程式碼JavaScript
- QT程式設計------VS2012配置QT環境,QT入門程式設計QT程式設計
- Android事件驅動程式設計(二)Android事件程式設計
- Android事件驅動程式設計(三)Android事件程式設計
- Android事件驅動程式設計(一)Android事件程式設計
- 使用js獲取滑鼠座標JS
- QT獲取日期,時間,星期QT
- Qt:獲取日期和時間QT
- qt 打包釋出 獲取dllQT
- Qt獲取當前時間QT
- Qt 獲取當前時間QT
- 滑鼠中鍵滾動mousewheel事件例項程式碼事件
- JQuery4:滑鼠事件和滾動事件jQuery事件
- Qt Creator中滑鼠鍵盤事件的處理實現自定義滑鼠指標QT事件指標
- js獲取事件源物件程式碼例項JS事件物件
- Linux程式設計(獲取系統時間)Linux程式設計
- 7-Windows程式設計 -滑鼠Windows程式設計
- Laravel最佳實踐–事件驅動程式設計Laravel事件程式設計
- Laravel 最佳實踐 -- 事件驅動程式設計Laravel事件程式設計
- Laravel最佳實踐 -- 事件驅動程式設計Laravel事件程式設計
- QT皮膚(QSS)程式設計QT程式設計
- ZT QT網路程式設計QT程式設計
- JavaScript 獲取滑鼠指標座標JavaScript指標
- JavaScript 獲取滑鼠指標的座標JavaScript指標
- jQuery獲取滑鼠指標座標jQuery指標