6.4 滾動區域(Scrolling Areas)

pamxy發表於2013-06-24

轉自:http://zlhwhj.blog.163.com/blog/static/253900342008125113815578/

QScrollArea類提供了一個可以滾動的可視視窗和兩個滾動條。如果我們想給一個控制元件加上一個滾動條,用QScrollArea會比設計我們自己的QScrollBar類實現滾動函式更簡單。
Figure 6.11. QScrollArea's constituent widgets
  
呼叫QScrollArea的setWidget()函式就能給控制元件加上滾動條。QScrollArea自動把控制元件設定為檢視(viewport,QScrollArea::viewport()得到)的一個子控制元件。例如,如果我們想給第五章的IconEditor加上滾動條,我們可以這樣寫程式碼:
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    IconEditor *iconEditor = new IconEditor;
    iconEditor->setIconImage(QImage(":/images/mouse.png"));
    QScrollArea scrollArea;
    scrollArea.setWidget(iconEditor);
    scrollArea.viewport()->setBackgroundRole(QPalette::Dark);
    scrollArea.viewport()->setAutoFillBackground(true);
    scrollArea.setWindowTitle(QObject::tr("Icon Editor"));
    scrollArea.show();
    return app.exec();
}
在QScrollArea控制元件上顯示控制元件的當前尺寸或者使用控制元件的sizeHint。呼叫setWidgetResizable(true),可以使QScrollArea自動改變控制元件的大小。
當檢視小於控制元件大小時,滾動條會自動出現。也可以設定滾動條一直顯示:
scrollArea.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
scrollArea.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
Figure 6.12. Resizing a QScrollArea
 
QScrollArea繼承了QAbstractScrollArea所有功能。QTextEdit和QAbstractItemView也是繼承自QAbstractScrollArea,這些類不需要使用QScrollArea來獲得滾動條。

相關文章