Python 单击时发出QTableWidgetItem特定信号

Python 单击时发出QTableWidgetItem特定信号,python,python-3.x,pyqt,pyqt5,qtablewidget,Python,Python 3.x,Pyqt,Pyqt5,Qtablewidget,我想实现一个功能,即可以选择和取消选择QTableWidgetItems中的多个QTableWidgetItems,以便进一步使用这些QTableWidgetItems的值和“位置” QTableWidget内部有一些空单元格,用于美观/间距,我试图实现的功能应该忽略这些单元格。 但事后也可以通过检查所选项目是否有内容轻松完成 self.table\u小部件.itemClicked.connect(self.some\u函数) 这是最合适的信号,但我无法指定或知道在表格小部件内部单击了哪个项目

我想实现一个功能,即可以选择和取消选择QTableWidgetItems中的多个QTableWidgetItems,以便进一步使用这些QTableWidgetItems的值和“位置”

QTableWidget内部有一些空单元格,用于美观/间距,我试图实现的功能应该忽略这些单元格。 但事后也可以通过检查所选项目是否有内容轻松完成

self.table\u小部件.itemClicked.connect(self.some\u函数)
这是最合适的信号,但我无法指定或知道在表格小部件内部单击了哪个项目,或者是否选中了

问题:当按下特定的QTableWidgetItem时,如何实现发出特定信号的功能?


下面是一些用于示例的pseude代码:

类窗口(QtWidgets.QMainWindow): 定义初始化(自): 超级(窗口,自我)。\uuuu初始化 uic.loadUi(“qtdesignerfile.ui”,self) self.show() #将信号连接到功能 self.table_小部件.itemClicked.connect(self.some_函数) #创建“全局”列表以保存所有选定项目 self.selected_items=[] #执行逻辑的一些函数 定义某些_函数(自): #区分项目是刚刚选定还是未选定的条件 如果尚未选择QTableWidgetItem(行、列): #更改背景颜色以指示选择 self.table_widget.item(行、列).setBackground(QtGui.QColor(100100)) #单击项目的“格式”信息以供进一步使用 所选项目=[str(表小部件.item(行、列).text()),行、列] #“保存”全局列表中的选定项以供进一步使用 self.selected\u items.append(selected\u item) #区分项目是刚刚选定还是未选定的条件 如果已选择QTableWidgetItem(行、列): #更改背景颜色以指示取消选择 self.table_widget.item(行、列).setBackground(QtGui.QColor(0,0,0)) #单击项目的“格式”信息以供进一步使用 所选项目=[str(表小部件.item(行、列).text()),行、列] #从全局列表中删除未选择的项 self.selected\u items.remove(selected\u item) 用户界面文件示例:


主窗口
0
0
418
297
主窗口
一排
第2排
第3排
第4排
第5行
第6行
分组
第2栏
第3栏
第一类
条目(1,1)
条目(1,2)
条目(2,1)
条目(2,2)
第2类
条目(4,1)
条目(4,2)
条目(5,1)
条目(5,2)
0
0
418
21

我对如何轻松实现这一功能感到困惑,并愿意接受关于不同方法的建议

应用程序的用户应该能够选择多个QTableWidgetItems,以便将项目所在行的信息传输到另一个QTableWidget以供进一步使用。

如果元素存在,则信号会传递按下的元素,默认情况下,Qt Designer仅创建其编辑的元素,在适当的地方放置文本

从PyQt5导入QtCore、QtGui、QtWidgets、uic
SelectedRole=QtCore.Qt.UserRole+1000
类窗口(QtWidgets.QMainWindow):
定义初始化(自):
超级(窗口,自我)。\uuuu初始化
uic.loadUi(“qtdesignerfile.ui”,self)
#self.tableWidget.setEditTriggers(qtwidts.QAbstractItemView.NoEditTriggers)
self.tableWidget.itemClicked.connect(self.onClicked)
@pyqtSlot(QtWidgets.QTableWidgetItem)
def onClicked(自我,it):
状态=不是它。数据(SelectedRole)
it.setData(SelectedRole,state)
这是一个倒退(
QtGui.QColor(100100100)如果状态为其他QtGui.QColor(0,0,0)
)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
w=窗口()
w、 show()
sys.exit(app.exec_())

share
qtdesignerfile
好的,那么我将使用我创建的.ui,如果它不起作用,那么您必须分析故障所在。我只有一个疑问:QTableWidget中的项目是文本还是空的?您能用QTableWidget创建一个.ui吗?我认为.ui会有几行,它也更好地解释了您的意思:用户可能会选择一个空项目(空行表示间距)但这应该是正确的ignored@eyllanesc添加了一个示例uifile@eyllanesc这些项目应该被我试图实现的功能所忽略。工作完美,比我想象的要优雅得多。