英汉对照:viewport(视图)
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。