首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt : QTableWidget中的复选框

PyQt : QTableWidget中的复选框
EN

Stack Overflow用户
提问于 2012-09-11 17:20:12
回答 1查看 26K关注 0票数 7

我使用以下代码在我的QTableWidget的第9列中放置一个复选框

代码语言:javascript
复制
chkBoxItem = QtGui.QTableWidgetItem()
chkBoxItem.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
chkBoxItem.setCheckState(QtCore.Qt.Unchecked)       
table.setItem(rowNo,9,chkBoxItem)

其中table是我的QtTableWidget。我需要将单击了复选框的行添加到列表中。我到底该如何做到这一点?

致以亲切的问候,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-11 23:37:17

一种方法是:

  1. 将表的itemClicked信号连接到处理程序
  2. 在处理程序
  3. 中测试单击项目的checkedState如果选中该项目,请将其row添加到列表

示例代码:

代码语言:javascript
复制
from PyQt4 import QtGui, QtCore

class Window(QtGui.QWidget):
    def __init__(self, rows, columns):
        QtGui.QWidget.__init__(self)
        self.table = QtGui.QTableWidget(rows, columns, self)
        for column in range(columns):
            for row in range(rows):
                item = QtGui.QTableWidgetItem('Text%d' % row)
                if row % 2:
                    item.setFlags(QtCore.Qt.ItemIsUserCheckable |
                                  QtCore.Qt.ItemIsEnabled)
                    item.setCheckState(QtCore.Qt.Unchecked)
                self.table.setItem(row, column, item)
        self.table.itemClicked.connect(self.handleItemClicked)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.table)
        self._list = []

    def handleItemClicked(self, item):
        if item.checkState() == QtCore.Qt.Checked:
            print('"%s" Checked' % item.text())
            self._list.append(item.row())
            print(self._list)
        else:
            print('"%s" Clicked' % item.text())

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window(6, 3)
    window.resize(350, 300)
    window.show()
    sys.exit(app.exec_())
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12366521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档