美文网首页
PyQt5编程(27):在窗口中布局组件—QStackedLay

PyQt5编程(27):在窗口中布局组件—QStackedLay

作者: 用电热毯烤猪 | 来源:发表于2018-01-01 21:46 被阅读0次
    QStackedLayout类提供了多页面切换的布局,一次只能看到一个界面。该类的继承层次结构如下:
    (QObject,QLayoutltem) - QLayout - QStackedLayout
    构造函数为:
    QStackedLayout([QWidget  parent])
    与QFormLayout一样,不是QWidget类的继承者,因此没有自己的窗口,不能单独使用。 因此,容器作为子控件使用。要在构造函数中指定父组件。如果没有,可将容器作参数,调用父组件的setLayout( )方法。例:
    

    import sys
    from PyQt5 import QtWidgets, QtCore

    class MyWidget(QtWidgets.QWidget):
    def init(self, i=0):
    super().init()
    self.setWindowTitle('小部件 ' + str(i))
    label = QtWidgets.QLabel('小部件 ' + str(i)+'可见')
    layout = QtWidgets.QHBoxLayout(self)
    layout.addWidget(label)

    class TestWidget(QtWidgets.QWidget):
    def init(self, parent=None):
    super().init(parent)
    layout = QtWidgets.QVBoxLayout(self)
    stack = QtWidgets.QStackedLayout() # ② Layout
    list = QtWidgets.QListWidget(self)
    list.setDragEnabled(True)
    list.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)
    layout.addWidget(list)
    layout.addLayout(stack) # ② 对应 addLayout

        for i in range(10):
            stack.addWidget(MyWidget(i))
            list.addItem("小部件   i" % i)
    
        list.currentRowChanged.connect(stack.setCurrentIndex)
    

    if name == "main":
    app = QtWidgets.QApplication(sys.argv)
    widget = TestWidget()
    #widget = MyWidget()
    widget.show()
    sys.exit(app.exec_())

    该类的方法有:

    addWidget(QWidget  widget) - 将一个组件添加到容器的末尾,返回添加组件的索引;
    insertWidget(int index,QWidget widget) - 将组件添加到指定的容器位置,返回添加组件的索引;
    setCurrentIndex (int index) - 将索引为index的组件设为可见,是个槽函数。
    currentIndex () - 返回可见组件的索引;
    setCurrentWidget(QWidget  widget) - 将组件设为可见,是个槽函数。
    currentWidget() - 返回可见组件;
    setStackingMode (
        StackOne - 0 - 仅一个组件可见(默认值);
        StackAll - 1 - 所在组件可见;
    stackingMode () - 返回层叠组件的可见方式;
    count( ) - 返回容器中组件的数量;
    widget (int index) - 返回索引值为index的组件。如果不存在,返回None.
    
    QStackedWidget类实现组件层叠,但它是一个组件,而不是一个容器。 继承层次结构如下所示:
    

    (QObject,QPaintDevice) - QWidget - QFrame - QStackedWidget
    构造函数:
    QStackedWidget(QWidget parent)
    该类在以下方法:
    addWidget( ),insertWidget( ), removeWidget( ), replaceWidget( ), count( ), currentIndex( ),currentWidget( ),widget( ),setCurrentIndex( )和setCurrentWidget( )等,其用法与QStackedLayout类的对应方法相同。
    QStackedWidget类中新增的方法有:

    indexOf(QWidget widget) -  返回组件的索引;
    _len_() - 返回组件的数量,调用len( )时调用。
    
    跟踪组件中的变化,可处理currentChanged和widgetRemoved信号。

    相关文章

      网友评论

          本文标题:PyQt5编程(27):在窗口中布局组件—QStackedLay

          本文链接:https://www.haomeiwen.com/subject/aprxnxtx.html