加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

PyQt5编程(27):在窗口中布局组件—QStackedLayout类和QStackedWidget类

(2017-11-02 08:36:23)
标签:

娱乐

分类: PYTHON
    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信号。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有