QTableWidget的setItem()使用Qt分段故障

我用下面的代码行添加到QTableWidget的。

QTableWidgetItem *item = new QTableWidgetItem(fileName); item->setCheckState(Qt::Checked); QComboBox *cmb = new QComboBox(this->list); cmb->addItem("one"); cmb->addItem("two"); this->list->setRowCount(this->list->rowCount()+1); this->list->setItem(this->list->rowCount()-1,0,item); this->list->setCellWidget(this->list->rowCount()-1,1,cmb);

有2列在表中。 “项”是放置在第一位,“CMB'中的第二个。 使用此代码,我可以成功地加1行表,但是当我尝试添加第二行,我得到一个分段错误。 它崩溃的这个 - >列表 - > setItem()调用。

任何想法,为什么它崩溃?

谢谢!

--------------解决方案-------------

我不知道为什么你的代码不作为是工作,但可以这样做:

int N = list->rowCount(); //The problem may lie in multiple rowCount() calls somehow
list->insertRow(N);
list->setItem(N,0,item);
list->setCellWidget(N,1,cmb);

此外,有没有你用'这 - >“特别的原因? 它通常是在这种情况下完全是多余的。

我的代码,这是非常相似,你和它坠毁,以及...

QTableWidgetItem* columnOne = new QTableWidgetItem();
columnOne->setCheckState(Qt::Checked);
QTableWidgetItem* columnTwo = new QTableWidgetItem("Some Text");

int row = tableWidget->rowCount();
tableWidget->insertRow(row);
tableWidget->setItem(row, 0, columnOne);
tableWidget->setItem(row, 1, columnTwo);

但是,如果我改变了setItem的电话,以检查状态,最后添加的顺序,然后它的工作。 因此,这是代码工作...

QTableWidgetItem* columnOne = new QTableWidgetItem();
columnOne->setCheckState(Qt::Checked);
QTableWidgetItem* columnTwo = new QTableWidgetItem("Some Text");

int row = tableWidget->rowCount();
tableWidget->insertRow(row);
tableWidget->setItem(row, 1, columnTwo);
tableWidget->setItem(row, 0, columnOne);

问题是此行(你被点名了一些清单,QTableWidget的一样:“名单”)中:

这 - >列表 - > setRowCount(这个 - >列表 - > rowCount时()+ 1)

this->list->rowCount()+1将总是返回0 + 1 = 1,所以这就是为什么你可以先添加,但不是第二行到表。

解决方法:名不是“名单”之外的其他QTableWidget的,例如:

this->myTableWidget->setRowCount(this->list->rowCount()+1);
this->myTableWidget->setItem(this->list->rowCount()-1,0,item);
this->myTableWidget->setCellWidget(this->list->rowCount()-1,1,cmb);

分类:QT 时间:2012-07-25 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.648 (s). 10 q(s)