QScrollArea

转载自 http://caterpillar.onlyfun.net/Gossip/Qt4Gossip/QScrollArea.html

 

有些元件預設並沒有捲軸,例如QLabel,當視窗或父元件無法顯示其大小時,只會顯示部份區域,但不會出現捲軸,如果您希望這類元件可以出現捲軸,則可以使用QScrollArea。

QScrollArea包括三個部份,一個是水平捲軸、一個垂直捲軸、一個view port,view port為水平捲軸及垂直捲軸中的顯示區域。

在下面的這個範例程式中,使用QLabel並使用setPixmap()設定其顯示圖片,在這邊使用QScrollArea的setWidget()將QLabel設定為view port中的顯示元件,並使用setHorizontalScrollBarPolicy()與setVerticalScrollBarPolicy ()設定總是顯示捲軸(Qt::ScrollBarAlwaysOn):

#include <QApplication>
#include <QLabel>
#include <QScrollArea>
#include <QPixmap>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    
    QLabel *label = new QLabel;
    label->setPixmap(QPixmap("caterpillar.jpg"));
    
    QScrollArea *scrollArea = new QScrollArea;    
    scrollArea->setWindowTitle("QScrollArea");

    scrollArea->setWidget(label);
    scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
    scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
    scrollArea->viewport()->setBackgroundRole(QPalette::Red);

    scrollArea->show();
    
    return app.exec();
}

您可以使用QScrollArea的viewport()方法取得水平、垂直捲軸間的view port,在這邊使用其setBackgroundRole()方法,設定view port所顯示元件外的區域顯示為灰色。

下圖為執行時的參考畫面,可以看到水平與垂直捲軸,而QLabel顯示圖片加上灰色區域即為view port區域:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值