要對乙個qchart圖表進行滑鼠和按鍵操作,需要在qchartview類裡對滑鼠和按鍵事件進行處理,這就需要自定義乙個從qchartview繼承的類,對需要處理的滑鼠和按鍵事件進行處理。
qchartview.setdragmode()函式將檢視元件滑鼠拖動選擇放手設定為「橡皮框」形式,即
self.setdragmode(qgraphicsview.rubberbanddrag)
這樣在圖表上按下滑鼠左鍵框選時,隨著滑鼠拖動會顯示乙個矩形選擇框。
1. keypressevent(event)是鍵盤按鍵按下時觸發的事件函式,從event.key()獲得按下按鍵的名稱,判斷按鍵然後做出縮放、移動等操作。
qchart有以下幾個用於縮放和移動的函式:
zoom(factor)函式:對圖表整個縣市區的內容進行縮放,float型引數factor大於1表示放大,小於1表示縮小,縮放後坐標軸範圍會自動變化。
zoomin()函式:放大圖表,放大因子為2。
zoomout()函式:縮小圖表,縮小因子為2。
zoomin(rect)函式:引數rect是qrectf型別物件,表示乙個矩形框,次函式的功能是放大顯示rect表示的矩形區域。
zoomreset()函式:取消所有縮放變化,恢復圖表原始的大小。
scroll(dx, dy)函式:引數dx和dy都是float型,表示評議的畫素值。
1. qscatterseries序列
qscatterseries是顯示散點的序列,它的介面函式可以設定散點的形狀、大小、填充顏色和邊框顏色。qscatterseries.setmarkershape(shape)用於設定散點形狀,引數shape是列舉型別,qscatterseries.markershape只有以下兩種取值:
qscatterseries.markershapecircle(圓形散點)
qscatterseries.markershaperectangle(方形散點)
雖然只有兩種散點形狀,但是可以通過填充顏色、邊框顏色等構成多種不同的散點,也可以通過graphic view結果的繪圖功能自定義散點形狀。
2. qsplineseries序列
qsplineseries的父類是qlineseries,其介面函式與qlineseries完全相同,只是繪製曲線的方式不同。qlineseries是將相鄰資料點用直線連線,而qsplineseries根據資料點做了插值,使曲線變得光滑。
3. hovered()訊號和clicked()訊號
qsplineseries、qlineseries和qscatterseries這三個類都是從qxyseries繼承來的,在qxyseries類中定義了以下兩個比較有用的訊號。
訊號hovered(point, state)在滑鼠移動到序列上或離開序列時發射。qpointf型別的引數point就是序列上的點的資料座標,bool性引數state表示進入(true)或是離開(false)。
訊號clicked(point)在單擊序列上的點時發射,qpointf型別的引數point就是序列上的點的資料座標。
4. 建立預設座標軸
qchart.createdefaultaxes()函式用於建立預設的座標軸,建立的預設座標軸會自動與已經新增的序列關聯,這與前面兩個示例建立座標軸的方式不同。建立的預設座標軸可以通過qchart的axisx()和axisy()訪問,仍然可以設定座標軸的範圍、標題等屬性。
5. qlegendmarker的使用
函式__createchart中的**:
for marker in chart.legend().markers():圖表新增序列後會自動建立圖例,qlegend.markers()函式返回的是乙個列表,列表元素是qlegendmarker型別的物件。qlegendmarker物件就是圖例上與每個序列關聯的小色塊和文字,qlegendmarker的介面函式可以控制圖例上的顯示效果。qlegendmarker類的主要介面函式如下:marker.clicked.connect(self.do_legendmarkerclicked)
setvisible() 設定圖例標記的可見性
setlabel() 設定標籤,即圖例中的序列的名稱
setfont() 設定標籤的字型
series() 返回關聯的序列
type() 返回圖例標記的型別,返回值型別是列舉型別qlegendmarker.legendmarkertype
qlegendmarker.type()函式返回圖例標記的型別,其返回值是列舉型別qlegendmarker.legendmarkertype,此列舉型別的取值與序列型別的關係如下所示(表中表示列舉型別及其取值時省略了字首「qlegendmarker.」):
列舉型別legendmarkertype的取值與序列型別的關係
legendmarkertype列舉型別取值
對應的序列類
legendmarkertypearea
qareaseries
legendmarkertypebar
qbarseries和qhorizontalbarseries
qstackedbarseries和qhorizontalstackedbarseries
qpercentbarseries和qhorizontalpercentbarseries
legendmarkertypepie
qpieseries
legendmarkertypexy
qsplineseries、qlineseries和qscatterseries
legendmarkertypeboxplot
qboxplotseries
legendmarkertypecandlestick
qcandlestickseries
按鍵精靈 後台按鍵及滑鼠操作
notepad.exe delay 2000 hwnd plugin.window.find notepad 0 hwndex plugin.window.findex hwnd,0,edit 0 call plugin.window.sendkeypress hwndex,65 現基本已經被bkg...
C 滑鼠按鍵判斷
using system using system.collections.generic using system.text using system.windows.forms using system.drawing namespace manualformclass class myclas...
獲取滑鼠按鍵事件
獲取滑鼠按鍵事件 方法一 最徹底有效的 window.oncontextmenu function 方法二 有缺陷的,不能少alert window.onmousedown function 說明 event.button 0 沒按鍵 event.button 1 按左鍵 event.button ...