首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带分段故障的QTWidgets QTableWidget崩溃

带分段故障的QTWidgets QTableWidget崩溃
EN

Stack Overflow用户
提问于 2017-10-19 18:54:50
回答 3查看 1.1K关注 0票数 1

我在QPushButton上有个信号:

代码语言:javascript
复制
void MainWindow::on_addNode_clicked()
{
    ui->nodesTable->insertRow(ui->nodesTable->rowCount());
    if(ui->nodesTable->rowCount()>1)
    {
        ui->nodesTable->item(ui->nodesTable->rowCount()-1, 0)->setText(ui->nodesTable->item(ui->nodesTable->rowCount()-2,0)->text());
    }
    else
    {
        ui->nodesTable->item(ui->nodesTable->rowCount()-1, 0)->setText(QString::fromStdString("0"));
    }
}

但每次单击该按钮时,它都会崩溃,出现分段错误。据我了解,第(.)项给nullptr但是为什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-10-20 06:50:04

当您的表中第一次没有项时,如果指针指向non,当您想到达它时,应用程序就会崩溃!

试试这个;

代码语言:javascript
复制
void MainWindow::on_addNode_clicked()
{
    ui->nodesTable->insertRow(ui->nodesTable->rowCount());
    if( !ui->nodesTable->rowCount() )
    {
        ui->nodesTable->item(ui->nodesTable->rowCount()-1, 0)->setText(ui->nodesTable->item(ui->nodesTable->rowCount()-2,0)->text());
    }
    else
    {
        ui->nodesTable->setItem(0, 0,new QTableWidgetItem(QString("New Item")));
    }
}
票数 0
EN

Stack Overflow用户

发布于 2017-10-20 00:33:21

由于您没有指定QTableWidget以0行和0列开始的行数和列数,添加1行仍然留给您0列。

此外,您必须先通过setItem创建您的项目,然后才能通过item访问它们。

请看一下文档中的概述

另一个注意事项是:

在您的else分支的if (ui->nodesTable->rowCount() > 1) rowCount() == 0中,因此您可以访问ui->nodesTable->item(-1, 0),这是不允许的。

票数 2
EN

Stack Overflow用户

发布于 2017-10-19 19:30:10

您必须设置列计数,并且必须手动设置该项:

代码语言:javascript
复制
ui->nodesTable->setColumnCount(1);
ui->nodesTable->insertRow(ui->nodesTable->rowCount());
ui->nodesTable->setItem(ui->nodesTable->rowCount()-1, 0, new QTableWidgetItem("0") );
if(ui->nodesTable->rowCount()>1)
{
    ui->nodesTable->item(ui->nodesTable->rowCount()-1, 0)->setText(ui->nodesTable->item(ui->nodesTable->rowCount()-2,0)->text());
}
else
{
    ui->nodesTable->item(ui->nodesTable->rowCount()-1, 0)->setText(QString::fromStdString("0"));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46836938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档