QScrollArea 滚动区域
滚动区域用于显示框架内子窗口小部件的内容。 如果窗口小部件超出框架的大小,则视图可以提供滚动条,以便可以查看子窗口小部件的整个区域。 子窗口小部件必须使用setWidget()指定。
继承关系
成员函数
alignment:
属性保存滚动区域的小部件的对齐方式
- Qt::Alignment alignment() const
- void setAlignment(Qt::Alignment)
有效的对齐方式是以下标志的组合:
- Qt::AlignLeft
- Qt::AlignHCenter
- Qt::AlignRight
- Qt::AlignTop
- Qt::AlignVCenter
- Qt::AlignBottom
widgetResizable:
属性保存滚动区域是否应调整视图小部件的大小,如果将此属性设置为false(默认值),则滚动区域将遵循其小部件的大小。 无论此属性如何,都可以使用widget()-> resize()以编程方式调整窗口小部件的大小,并且滚动区域将自动将其自身调整为新的大小。如果将此属性设置为true,则滚动区域将自动调整窗口小部件的大小,以避免在可以避免滚动条的地方使用滚动条,或者利用多余的空间。
- bool widgetResizable() const
- void setWidgetResizable(bool resizable)
子窗口
- void setWidget(QWidget *widget) //设置滚动区域的小部件。
- QWidget *takeWidget() //删除滚动区域的窗口小部件,并将该窗口小部件的所有权传递给调用方。
- QWidget *widget() const
位置关系(没验证出来有啥作用, 有自知道的欢迎留言)
滚动滚动区域的内容,以使点(x,y)在视口区域内部可见,其边距由xmargin和ymargin以像素指定。 如果无法达到指定点,则将内容滚动到最近的有效位置。 两个边距的默认值为50像素。
- void ensureWidgetVisible(QWidget *childWidget, int xmargin = 50, int ymargin = 50)
滚动滚动区域的内容,以使QScrollArea :: widget()的childWidget在视口内可见,其边距由xmargin和ymargin指定以像素为单位。 如果无法达到指定点,则将内容滚动到最近的有效位置。 两个边距的默认值为50像素。 此功能在Qt 4.2中引入。
示例代码
#include <QApplication>
#include <QLabel>
#include <QImage>
#include <QScrollArea>
#include <QHBoxLayout>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
QLabel *label = new QLabel(&w);
QImage image("E:\\Qt\\QmlCalss_1\\icon\\jpg1.jpg");
QHBoxLayout *lay=new QHBoxLayout(&w);
label->setPixmap(QPixmap::fromImage(image));
//创建滚动区,
QScrollArea *scrollarea = new QScrollArea(&w);
//将Widget组件加入滚动区
scrollarea->setWidget(label);
scrollarea->ensureWidgetVisible(label);
//自动改变滚动区大小
scrollarea->setWidgetResizable(1);
//设置滚动区背景颜色
scrollarea->setBackgroundRole(QPalette::NoRole);
lay->addWidget(scrollarea);
//解决布局周围有变框问题
lay->setContentsMargins(0, 0, 0, 0);
w.setLayout(lay);
w.show();
return a.exec();
}