滚动区域 |
发布: 2008-07-13 20:52 |
QScrollArea类提供了一个可滚动的视口和两个滚动条。如果我们想给一个物件添加滚动条,使用QscrollArea比使用我们的QscrollBars并自己实现滚动功能要简单的多。 图 6.11 QscrollArea的示例物件 使用QScrollArea的方法是以我们想添加滚动条的物件为参数调用setWidget()。QScrollArea会自动重置物件的父物件以让它成为该视口(通过QScrollArea::viewport()访问)的子物件,如果当前还不是的话。例如,如果我们希望在第5章中开发的IconEdit物件有一个滚动条,我们可以像下面这么写: [code type="cpp-qt"] 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(); } [/code] QScrollArea以物件当前的尺寸展示它,或者如果还没有被调整尺寸则使用它的尺寸暗示。通过调用setWidgetResizable(true),我们就能告诉QScrollArea自动调整物件的尺寸以充分利用它的尺寸暗示之外的多余空间。 默认情况下,滚动条仅在它的视口比较子物件小的时候才显示。我们可以通过设置滚动条策略强制滚动条总是显示: [code type="cpp-qt"] scrollArea.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); scrollArea.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); [/code] 图6.12 调整QScrollArea的尺寸 QScrollArea从QabstractScrollArea继承了大多数功能。如QTextEdit和QabstractItemView等类(Qt项视图类的基类)也是从QabstractScrollArea派生的,因此我们不需要把它们包装在一个QScollArea中来获得滚动条。 |
原文: http://qtchina.tk/?q=node/207 |
Powered by zexport
|