2011-11-21 91 views

回答

5

設0爲包裝QDial的最小值和最大值。如果兩個連續值變化之間的差值爲正值,則表示逆時針旋轉,如果不是,則表示順時針旋轉(必須將其調整爲實際值)

您應該子類QDial並使用sliderMoved信號:

當sliderDown爲真且滑塊移動時,發出此信號。 這通常發生在用戶拖動滑塊時。值 是新的滑塊位置。

即使關閉跟蹤,也會發射此信號。

這個信號連接到計算如果旋轉是順時針或逆時針

connect(this, SIGNAL(sliderMoved(int)), this, SLOT(calculateRotationDirection(int))); 

void calculateRotationDirection(int v) 
{ 
    int difference = previousValue - v; 

    // make sure we have not reached the start... 
    if (v == 0) 
    { 
     if (previousValue == 100) 
      direction = DIRECTION_CLOCKWISE; 
     else 
      direction = DIRECTION_ANTICLOCKWISE; 
    } 
    else if (v == 100) 
    { 
     if (previousValue == 0) 
      direction = DIRECTION_ANTICLOCKWISE; 
     else 
      direction = DIRECTION_CLOCKWISE; 
    } 
    else 
    { 
     if (difference > 0) 
     direction = DIRECTION_ANTICLOCKWISE; // a simple enum 
     else if (difference < 0) 
     direction = DIRECTION_CLOCKWISE; 
    } 
    previousValue = v; // store the previous value 
} 

現在,您可以添加返回子類的direction屬性功能的插槽。

相關問題