一、QScrollArea用法:
1、手动写代码:
1 QLabel *imageLabel = new QLabel; 2 QImage image("temp.png"); 3 imageLabel->setPixmap(QPixmap::fromImage(image)); 4 QScrollArea *scrollArea = new QScrollArea; //构造一个滚动区,继承于QFrame 5 scrollArea->setBackgroundRole(QPalette::Dark); 6 scrollArea->setWidget(imageLabel); //将这个widget放进scrollArea
2、直接在Qt Designer中拖进一个Scroll Area控件,这时候会自动生成一个QWidget::scrollAreaWidgetContents填入QScrollArea中。也可以将类QScrollArea提升为自己定义的类MyScrollArea:
指定滚动条策略:
QAbstractScrollArea::verticalScrollBarPolicy 垂直滚动条
QAbstractScrollArea::horizontalScrollBarPolicy 水平滚动条
Qt::ScrollBarAsNeeded 0 滚动条需要时显示
Qt::ScrollBarAlwaysOff 1 滚动条一直隐藏
Qt::ScrollBarAlwaysOn 2 滚动条一直显示
注意:当用scrollArea显示自定义widget的时候,确定这个窗口合适的大小很重要。
如果是一个标准的QWidget,有必要通过QWidget::setMinimumSize()设置一下这个控件的最小大小,这样当scrollArea只要小于这个值,scrollArea就能自动显示出滚动条了。
否则,QWidget就会自适应scrollArea滚动区的大小,scrollArea的滚动条显示不出来,不能实现滚动效果。
可以通过Qt designer设置属性值:
二、支持鼠标拖动来移动内容的自定义类MyScrollArea,代码如下:
myscrollarea.h
1