6-4 滚动区域(Scrolling Areas)

  英汉对照:viewport(视图)

QScrollArea类提供了一个可以滚动的可视窗口和两个滚动条。如果我们想给一个控件加上一个滚动条,从QScrollArea继承会比设计我们自己的QScrollBar类实现滚动函数更简单。
Figure 6.11. QScrollArea 's constituent widgets
6-4 滚动区域(Scrolling Areas)_第1张图片
  
调用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
6-4 滚动区域(Scrolling Areas)_第2张图片
 
QScrollArea继承了QAbstractScrollArea所有功能。QTextEdit和QAbstractItemView也是继承自QAbstractScrollArea,这些类不需要使用QScrollArea。

你可能感兴趣的:(qt)