我在Qt Designer上创建了一个界面,并在QGIS插件中使用了它。接口由源listWidget
,目标listWidget
和pushButton
组成。
我正在尝试将所选项目从源listWidget
带到目标listWidget
。
我由来源listWidget
填充:
self.ui.listWidget_1.addItems(soilList)
到目前为止,我将按钮信号写为:
QObject.connect(self.ui.pushButton, SIGNAL("clicked()"), self.click_pushButton)
但是现在我在编写填充目标click_pushButton
的listWidget
函数时遇到了麻烦。任何帮助将不胜感激,谢谢!
QListWidget.selectedIndexes()
将返回所选项目的索引列表。每个索引都有一个.row()
方法,该方法返回项目的行。然后,您可以使用.takeItem()
从第一个列表中获取(并删除)该项目,然后通过.addItem()
将其添加到第二个列表中。
翻译为:
def click_pushButton(self): # sort rows in descending order in order to compensate shifting due to takeItem rows = sorted([index.row() for index in self.ui.listWidget_1.selectedIndexes()], reverse=True) for row in rows: # assuming the other listWidget is called listWidget_2 self.ui.listWidget_2.addItem(self.ui.listWidget_1.takeItem(row)) # moving all items: def click_pushButton(self): for row in reversed(range(self.ui.listWidget_1.count()): # assuming the other listWidget is called listWidget_2 self.ui.listWidget_2.addItem(self.ui.listWidget_1.takeItem(row))
顺便说一下,请给您的小部件/方法起有意义的名称。
listWidget_1
或click_pushButton
并没有说明它们的含义。
并使用new style signals and slots。您可以这样编写connect语句:
self.ui.pushButton.clicked.connect(self.click_pushButton)
除非克隆,否则一个QListwidgetitem只能存在于一个QListwidget中。