簡體   English   中英

在pyqt中更改QStackedWidget的索引

[英]Change index of QStackedWidget in pyqt

我有一個QListWidget和一個QStackedWidget。 QListWidget顯示QStackedWidget中的小部件名稱。 在QListWidget中,您可以通過拖放來重新排列Widget的順序。

所以我的問題是,如何更新QStackedWidget中更改的訂單?

這是顯示問題的最小示例:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui, QtCore

class TestWidget(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.layout    = QtGui.QHBoxLayout(self)
        self.stack     = QtGui.QStackedWidget(self)
        self.item_list = QtGui.QListWidget(self)
        self.item_list.setDragEnabled(True)
        self.item_list.setDragDropMode(QtGui.QAbstractItemView.InternalMove)

        self.layout.addWidget(self.item_list)
        self.layout.addWidget(self.stack)

        for i in range(10):
            b_name = "Button %04i" % i
            i_name = "Item   %04i" % i
            self.stack.addWidget(QtGui.QPushButton(b_name, self))
            self.item_list.addItem(i_name)

        self.item_list.currentRowChanged.connect(self.stack.setCurrentIndex)


if __name__ == "__main__":
    app    = QtGui.QApplication(sys.argv)
    widget = TestWidget()

    widget.show()
    sys.exit(app.exec_())

在尋找QStackedWidget示例時發現了這個問題。 可能不再需要了,但我會考慮不要嘗試在堆疊的小部件中重新排列順序。 相反,我會保留一個Python字典,該字典使用列表名稱作為鍵,並使用堆棧中的索引作為值。 然后,當列表的值更改時,查找索引並將其設置為堆棧的該部分。

似乎比嘗試動態更正堆棧要少得多的工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM