получить значение из QlineEdit внутри QtableWidget в Pyqt4 Python - PullRequest
3 голосов
/ 11 марта 2019

У меня проблемы с получением поля «Введено в 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

рабочий код на С ++:


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

}

1 Ответ

1 голос
/ 11 марта 2019

Прежде всего код, который вы предоставляете на 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 нет необходимости выполнять приведение, но вы должны убедиться, что виджет, который возвращает cellWidget, является QLineEdit, используя isinstance():

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