QStackedWidget 与 QStackedLayout 的用法区别

 

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.QHBoxLayout(self)
        
        #stack  = QtWidgets.QStackedWidget() # ① Widget
        stack  = QtWidgets.QStackedLayout() # ② Layout

        list   = QtWidgets.QListWidget(self)
        list.setDragEnabled(True)
        list.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)

        layout.addWidget(list)
        #layout.addWidget(stack) # ① 对应 addWidget
        layout.addLayout(stack) # ② 对应 addLayout

        for i in range(10):
            stack.addWidget(MyWidget(i))
            list.addItem("窗口   %04i" % i)

        list.currentRowChanged.connect(stack.setCurrentIndex)


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

 

        # ... ...

        self.contentsWidget.currentItemChanged.connect(self.changePage)
        #self.contentsWidget.currentRowChanged.connect(self.pagesWidget.setCurrentIndex)


    def changePage(self, current, previous):
        if not current:
            current = previous
        self.pagesWidget.setCurrentIndex(self.contentsWidget.row(current))

 

转载于:https://www.cnblogs.com/hhh5460/p/5191626.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QStackedWidget 类是 Qt 中的一个容器控件,可以用来在同一位置放置多个子控件,并且只显示其中一个子控件。以下是 QStackedWidget 类的使用方法: 1. 在 Qt Designer 中添加 QStackedWidget 控件,并将需要切换的子控件添加为 QStackedWidget 的子控件。 2. 在代码中获取 QStackedWidget 控件的指针,并使用 addWidget() 函数将子控件添加到 QStackedWidget 中。 ``` QStackedWidget *stackedWidget = new QStackedWidget(this); QWidget *widget1 = new QWidget(); QWidget *widget2 = new QWidget(); stackedWidget->addWidget(widget1); stackedWidget->addWidget(widget2); ``` 3. 使用 setCurrentIndex() 函数设置当前显示的子控件的索引。 ``` stackedWidget->setCurrentIndex(0); // 显示第一个子控件 stackedWidget->setCurrentIndex(1); // 显示第二个子控件 ``` 4. 可以使用 currentIndex() 函数获取当前显示的子控件的索引。 ``` int index = stackedWidget->currentIndex(); // 获取当前显示的子控件的索引 ``` 5. 可以使用 count() 函数获取 QStackedWidget 中子控件的数量。 ``` int count = stackedWidget->count(); // 获取 QStackedWidget 中子控件的数量 ``` 6. 可以使用 widget() 函数获取指定索引的子控件的指针。 ``` QWidget *widget = stackedWidget->widget(0); // 获取第一个子控件的指针 ``` 7. 可以使用 removeWidget() 函数从 QStackedWidget 中移除指定的子控件。 ``` stackedWidget->removeWidget(widget1); // 从 QStackedWidget 中移除 widget1 子控件 ``` 以上是 QStackedWidget 类的一些常用方法,可以根据实际需求选择使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值