QChart 滑鼠和按鍵操作

2022-06-13 18:30:20 字數 2919 閱讀 3568

要對乙個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():  

marker.clicked.connect(self.do_legendmarkerclicked)

圖表新增序列後會自動建立圖例,qlegend.markers()函式返回的是乙個列表,列表元素是qlegendmarker型別的物件。qlegendmarker物件就是圖例上與每個序列關聯的小色塊和文字,qlegendmarker的介面函式可以控制圖例上的顯示效果。qlegendmarker類的主要介面函式如下:

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 ...