QScrollArea 能够为 widget(或其子类) 添加滚动视图 。滚动视图可以在widget的尺寸超过整个框架的尺寸时,显示滚动条。
示例一:
QLabel *imageLabel = new QLabel; QImage image("happyguy.png"); imageLabel->setPixmap(QPixmap::fromImage(image)); scrollArea = new QScrollArea; scrollArea->setBackgroundRole(QPalette::Dark); scrollArea->setWidget(imageLabel);
效果图如下:
注意!:当使用QScrollArea 能够 widget 添加滚动视图时,一定要先设置widget的sizehint(可以使用setMinimumSize() 来进行设置。),从而保证widget的内容能够正常显示
效果图如下:import sys from PyQt4 import QtCore, QtGui import classblock class MainWindow(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QMainWindow.__init__(self, parent) w = QtGui.QWidget() self.setCentralWidget(w) topFiller = QtGui.QWidget() topFiller.setMinimumSize (1200, 1200 ) for i in range(1, 40): label = QtGui.QLabel( "<--------->", topFiller) label.move(i*10, i*10) scroll = QtGui.QScrollArea() scroll.setWidget(topFiller) scroll.setAutoFillBackground(True) scroll.setWidgetResizable(True) vbox = QtGui.QVBoxLayout() vbox.addWidget(scroll) w.setLayout(vbox) self.statusBar().showMessage(self.tr("A context menu is available by right-clicking")) self.setWindowTitle(self.tr("Menus")) self.resize(480,320) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) mainwindow = MainWindow() mainwindow.show() sys.exit(app.exec_())