• 7589阅读
  • 10回复

[提问]程序编译通过,但是运行时候出错 [复制链接]

上一主题 下一主题
离线lazijiding
 

只看楼主 倒序阅读 楼主  发表于: 2011-08-22




程序代码如下

void MainWindow::hangshu(){    for (int i=(ui->tableWidget->rowCount()-1);i>0;i--)    {        for (int j=(ui->tableWidget->columnCount()-1);j>0;j--)        {            if (ui->tableWidget->item(i,j)->text()!="")            //if (i==j)            {                //aarow=i;                //exit;                ui->tableWidget->setItem(i,j,new QTableWidgetItem("yy"));            }            else            ui->tableWidget->setItem(i,j,new QTableWidgetItem("xx"));        }    }}用了tableWidget控件
把if (ui->tableWidget->item(i,j)->text()!="") 这一行注释掉或者换成 if (i==j)  就不会出错

请问if (ui->tableWidget->item(i,j)->text()!="")   有什么问题啊?该怎么改?
离线lazijiding

只看该作者 1楼 发表于: 2011-08-22
void MainWindow::hangshu()
{
    for (int i=(ui->tableWidget->rowCount()-1);i>0;i--)
    {
        for (int j=(ui->tableWidget->columnCount()-1);j>0;j--)
        {
            if (ui->tableWidget->item(i,j)->text()!="")
            //if (i==j)
            {
                //aarow=i;
                //exit;
                ui->tableWidget->setItem(i,j,new QTableWidgetItem("yy"));
            }
            else
            ui->tableWidget->setItem(i,j,new QTableWidgetItem("xx"));
        }
    }
}


用了tableWidget控件
把if (ui->tableWidget->item(i,j)->text()!="") 这一行注释掉或者换成 if (i==j)  就不会出错

请问if (ui->tableWidget->item(i,j)->text()!="")   有什么问题啊?该怎么改?

离线dbzhang800

只看该作者 2楼 发表于: 2011-08-22
分清 == 和 = 的区别先!
离线lazijiding

只看该作者 3楼 发表于: 2011-08-22
那个是!=啊
换成if (ui->tableWidget->item(i,j)->text()=="") 也是同样出错啊
离线dbzhang800

只看该作者 4楼 发表于: 2011-08-22
引用第3楼lazijiding于2011-08-22 11:21发表的  :
那个是!=啊
换成if (ui->tableWidget->item(i,j)->text()=="") 也是同样出错啊

哦,没注意。

ui->tableWidget->item(i,j)

你这个东西存在么??
离线lazijiding

只看该作者 5楼 发表于: 2011-08-22
应该是存在的吧
我前面限定 i和j了
而且 如果改成if (i==j)
后面的
ui->tableWidget->setItem(i,j,new QTableWidgetItem("yy"));

ui->tableWidget->setItem(i,j,new QTableWidgetItem("xx"));
运行的完全正确啊
离线lazijiding

只看该作者 6楼 发表于: 2011-08-22
我把所有东西都注释调了  还是会出错

void MainWindow::hangshu()
{
    //for (int i=(ui->tableWidget->rowCount()-1);i>0;i--)
    //for (int i=1;i<3;i++)
    {
        //for (int j=(ui->tableWidget->columnCount()-1);j>0;j--)
       // for (int j=1;j<2;j++)
        {
            if (ui->tableWidget->item(1,1)->text()==tr(""))
            //if (i==j)
            {
                //aarow=i;
                //exit;
                //ui->tableWidget->setItem(1,1,new QTableWidgetItem("yy"));
            }
            //else
            //ui->tableWidget->setItem(1,1,new QTableWidgetItem("xx"));
        }
    }
}
离线lazijiding

只看该作者 7楼 发表于: 2011-08-22
我明白了  原来ui->tableWidget->item(i,j) 必须要先赋值才能用

谢谢
离线uidab

只看该作者 8楼 发表于: 2011-08-22
回 6楼(lazijiding) 的帖子
ui->tableWidget->item(1,1)->text() 是个QString,  你首先确定确实是,然后按照 QString的操作进行判断。比如用 .isEmpty() 然后再看看。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线ppdayz

只看该作者 9楼 发表于: 2011-08-22
系统报的错。。明显是个用了个空指针!
0x0000000
离线yueno3

只看该作者 10楼 发表于: 2011-08-22
引用第9楼ppdayz于2011-08-22 12:38发表的  :
系统报的错。。明显是个用了个空指针!
0x0000000

是啊,应该是NULL
快速回复
限100 字节
 
上一个 下一个