固定
我正在编写一个程序,用于加载一个包含400个字符的文件,并且根据字符的不同,会在加载时更改表格单元格的背景颜色。
这是我创建QTableWidget的方式:
QTableWidget* mapTableWidget = new QTableWidget(this);
mapTableWidget->setRowCount(20);
mapTableWidget->setColumnCount(20);
for (int i = 0; i<20; i++)
{
mapTableWidget->setRowHeight(i,24);
mapTableWidget->setColumnWidth(i,24);
}
mapTableWidget->setShowGrid(false);
mapTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
mapTableWidget->setSortingEnabled(false);
我使用简单的方法将小部件添加到当前布局:
QVBoxLayout* layout = new QVBoxLayout;
layout->setMargin(5);
layout->addWidget(mapTableWidget);
这就是出错的地方:
for (int k=0; k<20; k++)
{
for(int l=0; l<20; l++)
{
QTableWidgetItem* tempitem = new QTableWidgetItem();
tempitem->setBackgroundColor(mb->colorAt(l,k));
mapTableWidget->setItem(k,l,tempitem);
}
}
我遇到的问题是我在调试时遇到了mapTableWidget-&gt; setItem(k,l,tempitem)的分段错误,应用程序也崩溃了。
有没有人有任何指针(:])来帮助我?
PS:
当不使用颜色部分时也会发生这种情况,因此注释setBackgroundColor行(我知道它已被弃用,但它适用于不同的项目)不会改变任何东西。
FIX
QTableWidget是在本地分配的,不在additem可以访问的范围内。将表格定义得更高是修复。
答案 0 :(得分:0)
QTableWidgetItem* tempitem = new QTableWidgetItem();
尝试向对象添加父级, 例如:
QTableWidgetItem* tempitem = new QTableWidgetItem(mapTableWidget);
答案 1 :(得分:0)
我的代码中的这个问题是因为cellChanged SLOT中的逻辑而发生的。我试图在QTableWidget中设置尚未实际创建的文本。