从Pyqt4 Python中QtableWidget内部的QlineEdit检索值

2024-09-27 23:18:37 发布

您现在位置:Python中文网/ 问答频道 /正文

检索输入的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();

}

Tags: textselflinerowwhileqtguirowcountqlineedit
1条回答
网友
1楼 · 发布于 2024-09-27 23:18:37

首先,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()

相关问题 更多 >

    热门问题