【问题标题】:retrieve value from QlineEdit inside QtableWidget in Pyqt4 Python在 Pyqt4 Python 中从 QtableWidget 中的 QlineEdit 检索值
【发布时间】:2019-08-01 08:57:57
【问题描述】:

我在检索在 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();

}

【问题讨论】:

    标签: python pyqt pyqt4 qtablewidget qlineedit


    【解决方案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()
    

    【讨论】:

    • 非常感谢您的支持,3 天以来我一直在努力解决这个问题。你给出的解决方案就像一个魅力!更新的工作代码: tmpString = "" for row in range(self.tableWidget.rowCount()): widget = self.tableWidget.cellWidget(row, 1) if isinstance(widget, QtGui.QCheckBox): tmpString = widget.isChecked( ) print tmpString elif isinstance(widget, QtGui.QLineEdit): tmpString = widget.text() print tmpString
    猜你喜欢
    • 2017-05-10
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多