如何从QTableView列中删除不需要的QLineEdit

时间:2019-04-05 11:26:18

标签: python pyqt qtableview qlineedit qcheckbox

我正在尝试使用PyQt为Modbus模拟器构建UI。我已经为模拟信号设置了QTableView,但对于数字信号的用户输入,我希望有一列QCheckBox。但是,当我尝试引入此功能时,我陷入了不必要的QLineEdit的困扰,无法消除该复选框旁边的内容。

这是构建数字信号表的当前代码:

    def create_digital_row(self, data_list):
        """
        Get data for SDI tab
        """
        value = ''
        address = data_list[0]
        bit = data_list[1]
        name = data_list[2]
        group = data_list[3]
        ref = str(address) + '@' + str(bit) + '#'
        digital_data = [address, bit, group, name, value, ref]
        row_data = []

        for column in xrange(0, len(digital_data)):
            item = QtGui.QStandardItem(str(digital_data[column]))
            item.setData(QtCore.Qt.AlignLeft, QtCore.Qt.TextAlignmentRole) 
            item.setData(QtCore.Qt.AlignVCenter, QtCore.Qt.TextAlignmentRole) 
            if column == 4:
                item.setCheckable(True)
            if column != 4:
                item.setEditable(False)

            row_data.append(item)
        return row_data

我尝试将value设置为None,并且(当前)设置为空字符串。将其设置为None会在不需要的QLineEdit中返回一个字符串“ None”,而空字符串只会产生一个空QLineEdit。

我已经阅读过Qt文档,并尝试了其他各种方法,例如setFlags等,但是由于我缺乏知识,很难对问题进行故障排除。 SO或QtCentre似乎也未涵盖此问题-我发现与之最接近的是相反的(不需要的复选框),但解决方案不适用于我的情况。

我很欣赏我可以忽略它,但是出于我编码的质量以及仅仅是为了提高我的理解,我真的想深入浅出。

很抱歉,如果我有任何错误的术语,这对我来说都是新手。

干杯!

0 个答案:

没有答案