Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么删除对象时没有明显的代码?_C++_Qt_Object - Fatal编程技术网

C++ 为什么删除对象时没有明显的代码?

C++ 为什么删除对象时没有明显的代码?,c++,qt,object,C++,Qt,Object,在qt中,我使用tablewidget存储100行。首先,我创建了一个新的tableWidgetItems来填充行。 当它运行时,我设置项目的属性,而不再设置为“新建”。 但我发现在使用“ui->tableWidget->setRowCount(index);”之后,如果稍后设置回100,代码“ui->tableWidget->item(index,0)->setText(…);”将使程序崩溃。太糟糕了;( 我调试并找到了“设置回100”之前设置为行计数的新索引>索引 当我设置较小的行数时,系统

在qt中,我使用tablewidget存储100行。首先,我创建了一个新的tableWidgetItems来填充行。 当它运行时,我设置项目的属性,而不再设置为“新建”。 但我发现在使用“ui->tableWidget->setRowCount(index);”之后,如果稍后设置回100,代码“ui->tableWidget->item(index,0)->setText(…);”将使程序崩溃。太糟糕了;( 我调试并找到了“设置回100”之前设置为行计数的新索引>索引

当我设置较小的行数时,系统是否自动删除表项??

我非常担心这一点,因为即使是我的代码也无法确定我创建的对象的生存期……有人知道如何在设置行数后使它们保持“活动”吗?(否则,我必须重新创建它们……)。 我真的很感激你能耐心地读我可怜的ELis:)

新的:

另一个功能:

    {

        ui->tableWidget->setRowCount(100);//back to be 100 again


        for(int queue_i = size_1, index = 0; queue_i >= 0; queue_i--, index++)
        {

            QStringList BITList = bits2Hexs(queue_i);
     ui->tableWidget->item(index, 0)->setText(logDisplayQueue.at(queue_i).at(0));//time
     ui->tableWidget->item(index, 1)->setText(logDisplayQueue.at(queue_i).at(1));//name
     ui->tableWidget->item(index, 2)->setText(BITList.join(""));//BITS
//In debugging, when index reches the value of old row-count, "->setText" crashes the    //program.


            if(queue_i == oldRowItemNo)ui->tableWidget->selectRow(index);
        }

    }
运行时,它返回类似“指令0x00421727引用0x00000000内存,内存无法“读取”的消息”

如果我不在这一行评论:
'ui->tableWidget->setRowCount(索引)//将行计数设置为30多或少”,它运行良好,没有崩溃,索引引用行之后的行显示与之前相同的数据。

setRowCount
确保表正好容纳这么多行。如果您的行数超过以前的
索引
,则这些行将消失(删除)


如果要临时隐藏行,可能应该使用/
showRow
,而不是重置行数。

setRowCount
确保表正好容纳这么多行。如果您的行数超过以前的
索引
,则这些行将消失(删除)


如果您想临时隐藏行,您可能应该使用/
showRow
而不是重置行数。

您可以显示用于创建表格小部件的代码吗?IIRC,Qt类型管理作为子小部件的每个指针的生存期。我不是Qt人,但我认为这与被删除的对象无关,表根本不记得它以前引用的对象//将行数设置为30多或更少’,运行良好,无故障。:)@Enobayram你能展示你用来创建表格小部件的代码吗?IIRC,Qt类型管理作为子小部件的每个指针的生存期。我不是Qt人,但我认为这与被删除的对象无关,该表根本不记得它以前引用的对象//将行数设置为30多或更少’,运行良好,无故障。:)@伊诺巴亚拉姆
   {
    int  index = 0;
    for(int queue_i = size_1; queue_i >= 0; queue_i--)
    {


        if(logDisplayQueue.at(queue_i).at(3) == "0" ||   logDisplayQueue.at(queue_i).at(3) == "2")continue;


        QStringList BITList = bits2Hexs(queue_i);


     ui->tableWidget->item(index, 0)->setText(logDisplayQueue.at(queue_i).at(0));//time
     ui->tableWidget->item(index, 1)->setText(logDisplayQueue.at(queue_i).at(1));//name
     ui->tableWidget->item(index, 2)->setText(BITList.join(""));//BITS

        if(queue_i == oldRowItemNo)ui->tableWidget->selectRow(index);
        index++;
    }

        ui->tableWidget->setRowCount(index);//set row count to be 30 more or less
    }
    {

        ui->tableWidget->setRowCount(100);//back to be 100 again


        for(int queue_i = size_1, index = 0; queue_i >= 0; queue_i--, index++)
        {

            QStringList BITList = bits2Hexs(queue_i);
     ui->tableWidget->item(index, 0)->setText(logDisplayQueue.at(queue_i).at(0));//time
     ui->tableWidget->item(index, 1)->setText(logDisplayQueue.at(queue_i).at(1));//name
     ui->tableWidget->item(index, 2)->setText(BITList.join(""));//BITS
//In debugging, when index reches the value of old row-count, "->setText" crashes the    //program.


            if(queue_i == oldRowItemNo)ui->tableWidget->selectRow(index);
        }

    }