Qt 第6章 布局管理(4) 滚动区域 学习笔记

QScrollArea类提供了一个可以滚动的视口和两个滚动条

如果想给一个窗口部件添加一个滚动条,则可以使用一个QScrollArea来实现,这可能要比我们 自己通过初始化QScrollBar,然后再实现它的滚动功能简单的多~

QScrollArea的使用方法:

我们想要添加滚动条的窗口部件为参数调用setWidget()。如果这个窗口部件对象不是视口,QScrollArea会自动把这个窗口部件的父窗口对象重定义为该视口(可以通过QScrollArea::viewport()来访问),并且让它成为视口的子对象。

比较晦涩,还是结合代码吧~

    IConEditor* pIconEditor = new IConEditor;   // IConEditor是自定义类,继承自QWidget
    pIconEditor->setIconImage(QImage(":/images/mouse.png"));
    
    QScrollArea scrollArea;
    scrollArea.setWidget(pIconEdit);    // 将pIconEdit作为参数添加到滚动区域
    scrollArea.viewport()->setBackgroundRole(QPalette::Dark);   // 告诉Widget使用调色板中的“暗”分量作为重绘窗口部件的颜色,而不是使用“背景色”分量
    scrollArea.viewport()->setAutoFillBackground(true); // 使得上一句生效
    scrollArea.setWindowTitle(QObject::tr("Icon Editor"));  // 窗口命名

    scrollArea.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); // 设置水平滚动条一直可见
    scrollArea.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);   // 设置垂直滚动条一直可见
        
    scrollArea.show();

通过调用setWidgetResizable(true)告诉QScrollArea要自动重新改变该窗口部件的大小,以利用超过它的大小提示之外的任何多余空间。

默认情况下,只有在视口的大小小于子窗口部件的大小时,才会把滚动条显示出来。但也可以通过设置滚动条的策略,强制滚动条总是可见。


QScrollArea从QAbstractScrollArea继承了它的许多功能。像QTextEdit和QAbstractItemView(Qt项试图类的基类)这样的一些类,由于它们是从QAbstractScrollArea中派生出来的,所以为了获得滚动条,就没有必要再把它们封装在QScrollArea中。


参考《C++ GUI Qt4编程(第二版)》

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页