Qt中控制QScrollBar顯示位置
在Qt中控制QScrollBar的顯示位置?有人就會覺得什麼時候會用到這樣的功能?
一般情況下,用到的功能大多數將捲軸滾動到最底部。很多情況下都是在QScrollArea中應用的。
功能:
1:滾動QScrollArea控制元件實時獲取QScrollBar的位置
2:指定QScrollBar的顯示位置
根據以上兩種功能,我們分別介紹吧!
1:實時獲取QScrollBar滾動位置
很多時候,我們在滾動的時候想要知道頁面滾動了多少,但是卻無法獲取!
是要重寫QScrollArea嗎?
我嘗試過重寫QWidget::wheelEvent,但是重寫的內容實在是太多了,維護也比較麻煩,所以,這種方法果斷放棄!
既然如此,我們就換一個思路吧!
因為QScrollArea中有垂直捲軸以及水平捲軸,那麼我們何不使用捲軸的訊息呢?
假設,當前顯示的是垂直捲軸,QScrollArea中widget滾動的位置我們不清楚,但是,我們知道捲軸滾動的位置,可以根據捲軸的變化,試試獲取QScrollBar的位置。
首先,我們需要定義響應訊息槽函式。
這一點很重要,很多人就是不知道使用哪個訊息,只有訊息確定了後面的問題才會迎刃而解!
connect
(
ui
。
scrollArea
->
verticalScrollBar
(),
&
QScrollBar
::
valueChanged
,
ui
。
widget
,
&
QScrollAreaWidget
::
ChangedScrollBarData
);
說明:
ui。widget是QScrollArea中使用的widget。
對應的類是:QScrollAreaWidget
響應函式是:ChangedScrollBarData
在函式ChangedScrollBarData中引數就是捲軸實時顯示的位置。
看到這裡,是不是覺得突然間發現好簡單了!
2:指定QScrollBar的顯示位置
這個功能更是簡單了,我們只需要設定捲軸的滾動的額長度就可以了。
假設,我們要將捲軸,捲軸二分之一處。
//1:獲取捲軸的總長度
int
nTotalValue
=
ui
。
scrollArea
->
verticalScrollBar
->
value
();
//2:將捲軸的位置設定成二分之一處。
int
nNewLoaction
=
nTotalValue
*
0。5
;
ui
。
scrollArea
->
verticalScrollBar
->
setvalue
(
nNewLocation
);
有人會說,只有QSCrollArea才會使用捲軸的設定方法嗎?
NO!只要你的控制元件中有捲軸控制元件都可以喲~