我有一个QListWidget和一个QStackedWidget。 QListWidget显示QStackedWidget中Widget的名称。在QListWidget中,您可以通过拖放重新排列小部件的顺序。
所以我的问题是,如何在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_())
答案 0 :(得分:1)
在寻找QStackedWidget示例时发现了这个问题。可能不再需要了,但我认为不会尝试在堆叠小部件中重新排列订单。相反,我会保留一个python字典,它使用列表名作为键,并将堆栈中的索引作为值。然后,当列表的值发生更改时,查找索引并设置为堆栈的该部分。
似乎比尝试动态更正堆栈要少得多。