app = qtw.QApplication(sys.argv)
win = qtw.QMainWindow()
def build():
ui = d1.Ui_Form()
ui.setupUi(win)
ui.pbtn_add.clicked.connect(add_item)
ui.pbtn_remove.clicked.connect(remove_item)
def add_item():
lst = win.findChild(QListWidget,'lw')
item = qtw.QListWidgetItem(lst)
dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
item.setText(dt)
item.setToolTip(f'当前时间:{dt}')
def remove_item():
lst = win.findChild(QListWidget,'lw')
if lst.count()>0:
for i in range(lst.count()-1,-1,-1):
item = lst.item(i)
if item.isSelected():
lst.removeItemWidget(lst.takeItem(i))
def main():
build()
win.show()
sys.exit(app.exec())
main()
新增按钮会在QListWidget中添加当前的事件,而删除按钮是用来删除选中的QListWidgetItem对象的.
删除按钮的点击信号连接到了槽函数remove_item,函数首先利用容器和QListWidget的objectName反射找到QListWidget对象.
然后开始遍历QListWidget中的item,因为遍历要跟着删除,所以采用倒遍历的方式.
如果发现一个item是被选中的,那么要用takeItem函数将这个位置的item选出来,选出会让该item与QListWidget割断联系,然后再用removeItemWidget将其删除.
QListWidget只能删除割断联系的item,所以,没有选出(takeItem)的item是不能被删除的.