Qt 怎麼給QWidget添加滾動條

在日常工作中,我們經常會遇到這樣的問題,界面顯示區域就這麼大,而我們需要在這個界面上顯示的區域卻比界面大的多,這個時候我們就會尋找一些方法,讓界面能夠拖動,就能夠在外界條件限制的情況下實現我們的需求。
這種方式是我們最常見的,也是比較常用的一種方法。
Qt中對這些的支持,QMainWindow控件能夠自帶,但是我們最常用的QWidget控件卻默認不支持,這樣我們就需要在QWidget上尋求一些突破口。
目前能夠知道的是有兩種方法:
1、Qt中QScrollArea實現了這種方式,使用也是比較方便,實現過程就是我們需要在父類中先創建一個QScrollArea類的對象,然後將我們需要拖動的QWidget放在這個對象裏面,就能夠很方便的託動,拖動的這個
滾動條實際上是QScrollArea類中的滾動條,這種方式的實現網上資料比較多,就不做什麼解釋。
2、使用QScrollBar類和QWidget合作,將QScrollBar拖動時的數值通過換算來移動QWidget同樣的距離也能夠實現接下來我們來看下這種方式的實現。
首先在QtDesigner中拖曳一個QWidget和一個QScrollBar(使用水平還是垂直根據自己的喜好確定),爲了能夠比較友好的顯示效果,最好QWidget設置比較明顯的背景或者標誌,這樣在後續就能夠直接看到效果。然後實現QScroolBar的信號槽,
信號槽的實現有多種方式就不做解釋。
接下來看下槽函數的實現:

void Widget::slot_horizontBarValueChange(int nValue)
{
    double dOffSet = static_cast<double>(nValue) / static_cast<double>(ui->horizontBar->maximum());
    ui->widgetMove->move(-(ui->widgetMove->width() - 350) * dOffSet, 0);
}

看上面的函數,我們首先是獲取了偏移的比例dOffSet,然後移動了QWidget,移動的距離-(ui->widgetMove->width() - 350) * dOffSet; 其中負號代表方向, 350 表示目前界面已經顯示了的大小(寬或高)。
爲了整個效果看起來比較和諧,我們可以提前設定QScrollBar的最大值,然後通過比較合適的比例來確定移動的距離。具體怎麼樣還需要各位自己摸索,畢竟只有自己參與了,學到的纔是自己的知識。

目前沒有效果,後續有機會再添加。

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