您當前的位置:首頁 > 繪畫

Qt中控制QScrollBar顯示位置

作者:由 中國好公民 發表于 繪畫時間:2022-08-18

在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!只要你的控制元件中有捲軸控制元件都可以喲~

標簽: 捲軸  QScrollBar  QScrollArea  滾動  UI