pyqt QTableWidget双击或单击单元格获取当前行和列以及QTableWidgetItem

  • A+
所属分类:编程语言

在使用pyqt中的Qtablewidget时,向实例化的表格中添加了很多行的数据,但是如何获取当前鼠标双击或者单击后选择的单元格行或者列的值以及获取当前点击单元格中的QTableWidgetItem或者是qwidget对象呢?

首先需要实例化QTableWidget,得到一个表格对象,然后建立鼠标单击或者双击的信号连接,将鼠标单击或双击事件的信号与自定义的槽函数进行关联。这里我实例化了一个self.sync_table  然后将其双击鼠标双击事件doubleClicked 与自定义的槽函数self.sync_table_double_clicked 进行了连接,槽函数可以接收一个参数,参数是双击事件发送的。

self.sync_table.doubleClicked.connect(self.sync_table_double_clicked)

其次,在表格里面添加QTableWidgetItem或者按钮QPushButton,或者标签QLabel或者多选框QComboBox等等控件。这里需要分两类,QTableWidgetItem主要是放文字,而QPushButton、QLabel等属于控件类,因此,在设置的时候需要分别设置,文字类的就放在QTableWidgetItem中,冰通过setItem来添加,而控件类的就放在对应类型的空间中并通过setCellWidget来添加。

self.sync_table.setItem(table_row, table_column,QTableWidgetItem())
self.sync_table.setCellWidget(total_row_num,5,QComboBox())

同样,获取某个单元格中的数据时也是分别就对应了item 和cellWidget来获取,这里需要特别注意。

比如:表格中放置了了一个qlable标签并且添加了文字内容,若要获取到文字内容就需要先获取到标签控件,然后再获取标签的内容。

current_item = self.sync_table.item(table_row, table_column)
current_account = self.sync_table.cellWidget(table_row, table_column)

最后,编写槽函数如何获取当前点击的单元格行、列和对应的数据item或widget。根据第一步链接的点击信号传来的index参数,分别调用column和row方法,获取到当前点击的行和列数字。然后根据行和列数字,定位到当前的item或者cellWidget。

def sync_table_double_clicked(self,index):
    table_column = index.column()
    table_row = index.row()
    current_item = self.sync_table.item(table_row, table_column)
    current_widget = self.sync_table.cellWidget(table_row, table_column)

以上就是pyqt5中QTableWidget单击或者双击后获取当前点击的单元格行数、列数及单元格对象的介绍。

weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: