QScrollArea 详解

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 

位置关系(没验证出来有啥作用, 有自知道的欢迎留言)

  • void QScrollArea::ensureVisible(int x, int y, int xmargin = 50, int ymargin = 50)

滚动滚动区域的内容,以使点(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();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值