注册 登录
编程论坛 Python论坛

求助tableWidget添加QLineEdit控件取值问题

yll148 发布于 2023-04-13 14:09, 141 次点击
请朋友帮我看看哪里设置不对,我添加了正则,单元格数据不能响应,取不到值。
       for sc1 in range(len(stm)):
                value=int(list_text[wz][sol1+1])/100
                if value==0:
                    newItem=QTableWidgetItem('')
                else:
                    newItem=QTableWidgetItem('{:,.2f}'.format(value))
                newItem.setForeground(QColor(0,0,0))
                pDoubleValidator=QDoubleValidator()
                pDoubleValidator.setNotation(QDoubleValidator.StandardNotation)
                pDoubleValidator.setDecimals(2)
                newItem.setTextAlignment(Qt.AlignRight|Qt.AlignVCenter)
                self.tableWidget.setItem(rec ,stm[sol1], QTableWidgetItem())
                self.ceil=QtWidgets.QLineEdit('{:,.2f}'.format(value))
                self.ceil.setValidator(pDoubleValidator)
                self.tableWidget.setCellWidget(rec ,stm[sol1],self.ceil)
                self.ceil.editingFinished.connect(self.eFinished)
                self.ceil.setStyleSheet("background:transparent;border-width:0;border-style:outset")
                self.ceil.setAlignment(Qt.AlignRight)
                sol1=sol1+1
3 回复
#2
东海ECS2023-04-13 19:16
抱歉,我无法回答,请提供完整代码.
#3
yll1482023-04-13 19:26
回复 2楼 东海ECS
我就是想在tablewidget单元格绑定QLineEdit控件,达到控制只能录入数值,并且把所录入的值传递给单元格。
#4
东海ECS2023-04-15 10:12
哦,那可能是因为您在设置 QTableWidgetItem 时没有设置其文本值。请尝试修改以下代码:

程序代码:

self.tableWidget.setItem(rec ,stm[sol1], QTableWidgetItem()) self.ceil=QtWidgets.QLineEdit('{:,.2f}'.format(value))
self.ceil.setValidator(pDoubleValidator)
self.tableWidget.setCellWidget(rec ,stm[sol1],self.ceil)


为:

程序代码:
newItem=QTableWidgetItem('{:,.2f}'.format(value))
newItem.setFlags(Qt.ItemIsEnabled) # 设置为只读
self.tableWidget.setItem(rec, stm[sol1], newItem)
self.ceil=QtWidgets.QLineEdit('{:,.2f}'.format(value))
self.ceil.setValidator(pDoubleValidator)
self.tableWidget.setCellWidget(rec, stm[sol1],self.ceil)


这样,QTableWidgetItem 将显示单元格的文本值,并且可以通过 self.tableWidget.item(rec, stm[sol1]).text() 获取其文本值。而 QLineEdit 将作为单元格的编辑控件,可以通过 self.tableWidget.cellWidget(rec, stm[sol1]).text() 获取其文本值。

[此贴子已经被作者于2023-4-15 10:13编辑过]

1