1
我已經搜索了答案,並且ui->tableWidget->item(row, col)->text();
似乎是答案。 現在,在我的代碼有:爲什麼我無法從QTableWidget單元中獲取文本?
ui-> tableWidget->setItem(row-1, 1, new QTableWidgetItem("clicked"));
這一切正常。單擊單元格時,將顯示「已單擊」消息。但是,當我添加下面:
QString str;
QTableWidgetItem * itm = ui->tableWidget->item(3, 1);
str = itm->text();
該程序崩潰。 任何想法如何查看單元格中的文本?
所有code.Constructor:
{
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)));
}
}
插槽:
void MainWindow::on_tableWidget_cellDoubleClicked(int row, int column)
{
ui->pushButton->setText(QString("%1").arg(row));
ui-> tableWidget->setItem(row-1, 1, new QTableWidgetItem("clicked"));
QString str;
QTableWidgetItem * itm = ui->tableWidget->item(3, 1);
str = itm->text();
}
我曾試圖彌補另一個program.Just用一個簡單的表,獲取文本從細胞:
ui->setupUi(this);
ui->tableWidget->setItem(1,1,new QTableWidgetItem("lol"));
QString str= ui->tableWidget->item(1,1)->text();
。完全相同的錯誤
能否請您分享更多的代碼和回溯初學者? – lpapp
你確定'ui-> tableWidget-> item(...)'返回有效的項目嗎?如果在指定的行和列上沒有項目,它將返回0。在空項目上調用'itm-> text()'會導致段錯誤。 –