PyQt(Python+Qt)學習隨筆:QDial刻度盤部件功能簡介

一、概述

Designer中的Dial刻度盤輸入部件提供一個圓形的刻度表,類似速度表,對應類爲QDial類。QDial繼承自QAbstractSlider(關於QAbstractSlider的功能請參考《PyQt(Python+Qt)學習隨筆:QScrollBar以及QAbstractSlider滾動條部件功能詳解》),因此刻度盤與滑動條類似。當wrapping屬性值爲False(默認設置)時,刻度盤和滑動條之間除了外觀外沒有真正的區別。它們共享相同的信號、插槽和成員函數。關於滑動條的功能請參考《PyQt(Python+Qt)學習隨筆:QSlider滑動條部件功能簡介》。

刻度盤的鍵盤操作相當簡單:左鍵/上鍵和右鍵/下鍵按定義的單步移動指針和改變值,PgUp和PgDn按定義的頁面步向上和向下移動指針和調整值,Home鍵和End鍵將移動指針到最小值和最大值。

如果使用鼠標滾輪調整刻度盤,則增量值由 wheelScrollLines乘以singleStep和pageStep的較小值確定。

二、QDial撥號盤部件的屬性、方法和信號

QDial刻度盤部件的獨有屬性如下:

  • wrapping屬性 :wrapping用於控制刻度盤上的刻度是否前後連接,如果爲False,則最小值和最大值中間會有一段空白區域進行分隔,使用光標鍵調節值時指針只能在最小值和最大值之間移動,到達最大值或最小值時無法再朝對應方向移動。用鼠標拖拽指針可以越過最大值或最小值進行循環移動,但指針不能在空白區域段停留。如果wrapping爲True,則指針移動到最大值或最小值時可以繼續向對應方向移動,數值則跳轉到最小值或最大值
  • notchesVisible屬性:notchesVisible用於控制刻度盤上刻度線是否可見,可見時刻度線在錶盤上平均分佈
  • notchTarget屬性:notchTarget用於控制刻度盤上刻度線之間的像素數量,錶盤上刻度線的數量與4個屬性相關,分別是最小值minimum、最大值maximum、singleStep單步數值以及notchTarget屬性值,如果考慮notchTarget的值後錶盤上的空間足夠,刻度線的數量等於(maximum-minimum+1)/singleStep後四捨五入取整的值(假設爲count),如果notchTarget設置過大導致count*notchTarget的值超過整個錶盤的周長像素數,則只會繪製部分刻度線

除了構造方法以及上述屬性的訪問方法外,QDial的其他屬性、方法和信號都是從父類派生的,比較重要的包括:

  • 當刻度盤的指針移動時,刻度盤最初會連續發出valueChanged()信號和sliderMoved()信號,可以通過禁用跟蹤屬性使其發出valueChanged()信號的頻率降低,但sliderMoved()信號不受影響
  • 當拖拽指針移動時,按下和釋放鼠標按鈕時,刻度盤還會發出sliderPressed()和sliderReleased()信號
  • 與滑動條一樣,刻度表可以使用QAbstractSlider的setValue()槽方法。

在《第15.35節 PyQt編程實戰:結合QDial實現的QStackedWidget堆疊窗口程序例子》介紹了一個QDial的案例,大家可以回過頭去看下。

跟老猿學Python、學5G!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章