为什么可以';我不能从QTableWidget单元格中获取文本吗?

为什么可以';我不能从QTableWidget单元格中获取文本吗?,qt,cell,qtablewidget,Qt,Cell,Qtablewidget,我已经搜索了答案,并且ui->tableWidget->item(row,col)->text()似乎是答案。 现在,在我的代码中,我有: ui-> tableWidget->setItem(row-1, 1, new QTableWidgetItem("clicked")); 这个很好用。单击单元格时,将显示“单击”消息。但是,当我添加以下内容时: QString str; QTableWidgetItem * itm = ui->tableWidget->item(

我已经搜索了答案,并且
ui->tableWidget->item(row,col)->text()似乎是答案。
现在,在我的代码中,我有:

ui-> tableWidget->setItem(row-1, 1, new QTableWidgetItem("clicked"));
这个很好用。单击单元格时,将显示“单击”消息。但是,当我添加以下内容时:

QString str;
QTableWidgetItem * itm = ui->tableWidget->item( 3, 1 );
str = itm->text();
程序崩溃了。 你知道我怎样才能从手机里看到文字吗

所有代码。构造函数:

{
    ui->setupUi(this);


    QDate date = QDate::currentDate();
    QString dateString = date.toString();

    QFont myFont;
    QFontMetrics font_meter(myFont);
    int line_width=0;

    ui->label->setText(dateString);

    QFile file(":/input.txt");

    if(!file.open(QIODevice::ReadOnly))
    {
        QMessageBox::information(0,"info",file.errorString());
    }

    QTextStream in(&file);
    QStringList headerLabels;
    QStringList rowLabels;
    QStringList rowContents;


    headerLabels << "Tasks to do" ;

    int row_count=0;

    while (true)
    {
        QString line = in.readLine();

        if (line.isNull())
        {
          file.close();
          break;
        }
        else
        {
            row_count++;
            rowLabels.append(QString("%1").arg(row_count));
            rowContents.append(line);
            if( font_meter.width(line)>line_width)
            {
                line_width=font_meter.width(line);
            }
        }

    }


   ui->tableWidget->setRowCount(row_count);
   ui->tableWidget->setVerticalHeaderLabels(rowLabels);
   ui->tableWidget->setColumnCount(1);

  // ui->tableWidget->setCellWidget();

  for(int i=0;i<row_count;i++)
  {
      ui-> tableWidget->setItem(i-1, 1, new QTableWidgetItem(rowContents.at(i)));


  }


}
我尝试制作另一个程序。只需使用一个简单的表格并从单元格中提取文本:

ui->setupUi(this);

    ui->tableWidget->setItem(1,1,new QTableWidgetItem("lol"));

    QString str= ui->tableWidget->item(1,1)->text();
.完全一样的错误

ui->setupUi(this);
ui->tableWidget->setRowCount(1);
ui->tableWidget->setColumnCount(1);
ui->tableWidget->setItem(0, 0, new QTableWidgetItem("Hello World!"));
QTableWidgetItem *temp = ui->tableWidget->item(0, 0);
QString str = temp->text();

对我来说,我只在行数或列数为0时才使程序崩溃

你能为初学者共享更多代码和回溯吗?你确定
ui->tableWidget->item(…)
返回有效项吗?如果指定的行和列上没有项,则返回0。对空项调用
itm->text()
,将导致segfault。
ui->setupUi(this);
ui->tableWidget->setRowCount(1);
ui->tableWidget->setColumnCount(1);
ui->tableWidget->setItem(0, 0, new QTableWidgetItem("Hello World!"));
QTableWidgetItem *temp = ui->tableWidget->item(0, 0);
QString str = temp->text();