日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT界面操作1:如何跟踪鼠标位置?

發(fā)布時間:2025/3/21 c/c++ 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT界面操作1:如何跟踪鼠标位置? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

python GUI庫圖形界面開發(fā)之PyQt5信號與槽事件處理機(jī)制詳細(xì)介紹與實例解析_python_腳本之家 (jb51.net)

一、可預(yù)見事件

事件很多,窗口、鼠標(biāo)、鍵盤、時間等的些許改變,都足可以構(gòu)成一個事件。有些事件是可預(yù)料的如按鈕按下、鼠標(biāo)移動等,可以預(yù)先建立程序入口。所有的QWidget都存在可預(yù)見事件。如下:

  • 鍵盤事件:按鍵的按下與松開
  • 鼠標(biāo)事件:鼠標(biāo)指針的移動,鼠標(biāo)按鍵的按下與松開
  • 拖放事件:用鼠標(biāo)進(jìn)行拖放
  • 滾輪事件:鼠標(biāo)滾輪滾動
  • 繪屏事件:重繪制屏幕的某些部分
  • 定時事件:定時器到時
  • 焦點事件:鍵盤焦點移動
  • 進(jìn)入和離開事件:鼠標(biāo)指針移入Widget內(nèi),或者移出
  • 移動事件:Widget的位置改變
  • 大小改變事件:widget的大小改變
  • 顯示和隱藏事件:widget顯示與隱藏
  • 窗口事件:窗口是否為當(dāng)前窗口

如:mousePressEvent(),keyPressEvent(),paintEvent()

二、概括性事件--QObject.event

????????概括性事件,是指凡是有事件觸發(fā),這個事件必然被觸發(fā),而且是最早觸發(fā)。這個道理是,事件觸發(fā)首先是操作系統(tǒng)的某個中斷被觸發(fā),究竟是哪一個中斷事件,需要進(jìn)一步判別。這個概括性事件就是QObject.event()接口。

?因此,有些事件可以超載對應(yīng)事件虛函數(shù)實現(xiàn)。當(dāng)然,也可以超載QObject的Event得以實現(xiàn)。

三、鼠標(biāo)追蹤

????????本代碼首先解決一個小問題,如何追蹤鼠標(biāo)的位置?本篇介紹可預(yù)見事件超載實現(xiàn)。

3.1 基本代碼

1)導(dǎo)入函數(shù)包

import sys from PyQt5.QtCore import (QEvent, QTimer, Qt) from PyQt5.QtWidgets import (QApplication, QMenu, QWidget) from PyQt5.QtGui import QPainter

2)定義一個窗口

class Widget(QWidget):def __init__(self, parent=None):super(Widget, self).__init__(parent)self.resize(1200, 800)self.move(100, 100)#設(shè)置標(biāo)題self.setWindowTitle("Events")

3)運行所定義窗口

if __name__ == "__main__":app = QApplication(sys.argv)form = Widget()form.show()app.exec_()

3.2 追加鼠標(biāo)位置追綜功能

在以上的widget追加一個函數(shù):

def mouseMoveEvent(self, event):#如果沒有鼠標(biāo)雙擊,執(zhí)行g(shù)lobalPos = self.mapToGlobal(event.pos())x = globalPos.x()y = globalPos.y()print(x,y)

以上程序在鼠標(biāo)按下后移動,可以捕獲移動位置,但鼠標(biāo)不按不可以跟蹤,如何改,才能不按下鼠標(biāo)也能追蹤?

答案:在

class Widget(QWidget):
? def __init__(self, parent=None):

上追加:

self.setMouseTracking(True)

就可以了。

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的QT界面操作1:如何跟踪鼠标位置?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。