仅通过单击行标题选择 QTableWidget 行

Posted

技术标签:

【中文标题】仅通过单击行标题选择 QTableWidget 行【英文标题】:Select QTableWidget rows only by clicking row header 【发布时间】:2016-08-10 11:58:51 【问题描述】:

我有一个 QTableWidget。我已经用

设置了它的选择行为
myTableWidget.setSelectionBehaviour(QTableWidget.SelectRows)

现在我可以通过单击表格的单元格来选择行。但我希望能够仅通过单击垂直标题标签来选择行。我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

类 Qt.ItemFlag

这个枚举描述了一个项目的属性。请注意,需要为可检查项目提供一组合适的标志和初始状态,以指示该项目是否已检查。对于模型/视图组件,这是自动处理的,但需要为 QTableWidgetItem 的实例显式设置。

在这种情况下,我将使用(为所有项目设置标志):

Qt::ItemIsSelectable - 可以选择。

    self.dlg.tableWidget.setRowCount(3)
    self.dlg.tableWidget.setColumnCount(4)
    self.dlg.tableWidget.horizontalHeader().sectionPressed.disconnect() # disconnect horizontal header

    data = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]

    for row in range(3):  # add items from array to QTableWidget
        for column in range(4):
            item = QTableWidgetItem(str(data[row][column]))  # each item is a QTableWidgetItem
            item.setFlags(Qt.ItemIsSelectable) # set flag to the item
            self.dlg.tableWidget.setItem(row, column, item)

注意:只有单击verticalHeader 才会选择该行

【讨论】:

以上是关于仅通过单击行标题选择 QTableWidget 行的主要内容,如果未能解决你的问题,请参考以下文章

如何清除 pyqt QTableWidget?

jqGrid 多选 - 仅使用复选框限制行的选择

如何取消选择整个 QTableWidget 行

在 qTableWidget 单元格中选择文本

如何为 QTableWidget 行绘制边框?

使用 Python pyqt4 获取 QTableWidget 中特定行和列的单元格突出显示