2

カスタムウィジェットを備えた QListWidget があります。次の操作を行うと、次のような問題が発生します。

  1. 2つのアイテムを追加
  2. 2 番目の項目を削除します
  3. 別のアイテムを追加

ウィンドウのサイズを変更するか、3 番目のアイテムを追加するまで、最初のアイテムのウィジェットの内容は消えます。

import sys
from PySide.QtGui import *
from PySide.QtCore import *

class StagingWidget(QGroupBox):
    def __init__(self,parent=None):
        #QWidget.__init__(self,parent)
        super(StagingWidget,self).__init__()
        self.itemWidgets = list()
        self.count = 1  
        self.createUi()

    def createUi(self):
        self.widget_layout=QVBoxLayout(self)

        self.list_widget=QListWidget()

        self.setFixedWidth(450)
        self.setFixedHeight(600)
        self.list_widget.setStyleSheet("QListWidget::item:selected{background:lightblue}")
        self.widget_layout.addWidget(self.list_widget)
        self.buttonHLayout = QHBoxLayout()
        self.add = QPushButton("Add Item")
        self.add.clicked.connect(self.addListItem)
        self.buttonHLayout.addWidget(self.add)
        self.widget_layout.addLayout(self.buttonHLayout)

    def addListItem(self):
        itemN = QListWidgetItem()
        widget = QWidget()

        Button1 = QPushButton(str(self.count))
        Button2 =  QPushButton("Remove")
        Button2.clicked.connect(lambda item=itemN:self.removeJob(item))
        widgetLayout = QHBoxLayout()
        widgetLayout.addWidget(Button1)
        widgetLayout.addWidget(Button2)
        widget.setLayout(widgetLayout)
        itemN.setSizeHint(widget.sizeHint())    
        self.itemWidgets.append(widget)
        self.list_widget.addItem(itemN)
        self.list_widget.setItemWidget(itemN, self.itemWidgets[-1])
        self.count = self.count + 1

    def removeJob(self,item):
        print("Removing Job")
        row = self.list_widget.indexFromItem(item).row()
        self.list_widget.takeItem(row)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    widget = StagingWidget()
    widget.show()
    sys.exit(app.exec_())  

例: 1 つの項目を追加:

ここに画像の説明を入力

別のアイテムを追加:

ここに画像の説明を入力

アイテム 2 を削除します。

ここに画像の説明を入力

別のアイテムを追加します (アイテム 1 のウィジェットが消えるのがわかります):

ここに画像の説明を入力

別のアイテムを追加します (アイテム 1 のウィジェットが再表示されます):

ここに画像の説明を入力

これは、上記の手順を実行するたびに発生します。

4

0 に答える 0