QT:如何检查 qt 表格小部件中是不是有空单元格
Posted
技术标签:
【中文标题】QT:如何检查 qt 表格小部件中是不是有空单元格【英文标题】:QT :how to check if there Empty cell in qt table widgetQT:如何检查 qt 表格小部件中是否有空单元格 【发布时间】:2014-03-31 06:28:21 【问题描述】:我有具有特定行和列的表格小部件,
我的功能如下
从第一列和第二列获取值
比较它们并在第三列返回结果
例如:第一列:1 2 3 第二列 2 2 3 结果列 否 是 是
我通过使用 qDebug 确保我的代码可以正常工作,但是当我编译并运行它时,主窗口停止并崩溃。
我使用 for 循环抛出所有行 for(int row=0;rowtableWidget->rowCount();row++)
我认为这一行 rowtableWidget->rowCount() 因为当它读取空单元格时,应用程序会冻结并停止工作。
我怎样才能避免这种情况发生
void MainWindow::GenerateRes()
QString Result;
for(int row = 0; row < ui->tableWidget->rowCount(); row++)
QString R1 = ui->tableWidget->item(row, 0)->text();
QString R2 = ui->tableWidget->item(row, 1)->text();
if(R1 == R2)
Result = "P" ;
else
Result = "F" ;
QTableWidgetItem *Item = new QTableWidgetItem(Result);
ui->tableWidget->setItem(row, 2, Item);
qDebug() << Item;
【问题讨论】:
第五行的ui->tableWidget->rowCount()是什么? 可能是我误加了这一行。 【参考方案1】:要检查 QTableWidget 中的 cell(i,j) 是否为空,请使用 isNull()
或 isEmpty()
。
示例:
for(int i=0; i < ui->tableWidget->rowCount(); i++)
for(int j=0; j < ui->tableWidget->columnCount(); j++)
bool flag = ui->tableWidget->item(i,j)->text().isNull();
if (!flag) /* the cell is not empty */
// do stuff
else /* the cell is empty */
// do stuff
【讨论】:
在 PyQt5 中有类似的东西吗?【参考方案2】:也许您应该检查从 tableWidget::item() 返回的值,因为如果没有将任何项目分配给提供的坐标,则函数可以返回 0,在这种情况下,您正在尝试调用方法 (QTableWidgetItem:: text()) 在零指针上。 尝试类似:
QString R1;
QTableWidgetItem *item1(ui->tableWidget->item(row,0));
if (item1)
R1 = item1->text();
// and so on...
无论如何,您的代码看起来很奇怪,第 5 行 (ui->tableWidget->rowCount()) 没有意义,您应该无法编译它(至少您缺少分号)。
【讨论】:
很好,所以我只是建议您检查 tableWidget::item() 返回值。以上是关于QT:如何检查 qt 表格小部件中是不是有空单元格的主要内容,如果未能解决你的问题,请参考以下文章