从Pyqt4 Python的QtableWidget内的QlineEdit检索值

时间:2019-03-11 04:20:46

标签: python pyqt pyqt4 qtablewidget

我在找回QWidgetlineEdit框中的输入时遇到麻烦。 取得了C ++的相同实现,但无法使用Python检索,

    self.line = QtGui.QLineEdit() 
    i =0
    while(i<self.tableWidget.rowCount()):
    self.q = (QtGui.QLineEdit()).self.tableWidget.cellWidget(i, 1)
    j = self.line.text()
    print j
    i +=1

c ++中的工作代码:


QLineEdit* tmpLineEdit;
QString tmpString;
for(int row=0; row < moneyTableWidget.rowCount(); row++)
{
    tmpLineEdit = qobject_cast<QLineEdit *>(moneyTableWidget.cellWidget(row,1));
    tmpString = tmpLineEdit->text();

}

1 个答案:

答案 0 :(得分:1)

首先,您使用C ++提供的代码很危险,因为没有人保证返回的cellWidget是QLineEdit,因此验证可以改善代码:

QString tmpString;
for(int row=0; row < moneyTableWidget.rowCount(); row++)
{
    if(QLineEdit * tmpLineEdit = qobject_cast<QLineEdit *>(moneyTableWidget.cellWidget(row,1)))
        tmpString = tmpLineEdit->text();
}

在使用python的情况下,无需进行强制转换,但您必须使用isinstance()来验证返回cellWidget的小部件是否是QLineEdit:

tmpString = ""
for row in range(self.tableWidget.rowCount()):
    widget = self.tableWidget.cellWidget(row, 1)
    if isinstance(widget, QtGui.QLineEdit):
        tmpString = widget.text()