2015-03-02 2 views
2

FIXEDQt Сегментация Fault QTableWidget-> SetItem (INT, INT, QTableWidgetItem)

Я пишу программу, которая загружает файл с 400 символами, и в зависимости от характера изменяет BackgroundColor из в TableCell на нагрузки.

Это, как я создать 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-> setItem (k, l, tempitem), когда отладки, а также сбой приложения в этой точке.

Есть ли у кого-нибудь указатели (:]), чтобы помочь мне здесь?

PS:

Это также происходит, когда не используется цвет части, так комментируя setBackgroundColor линию из (я знаю, что это не рекомендуется, но он работал на другом проекте) ничего не меняет.

FIX

QTableWidget было выделено на местном уровне и выходит за рамки, где AddItem имел доступ. Определение таблицы выше было исправлением.

ответ

0
QTableWidgetItem* tempitem = new QTableWidgetItem(); 

Попытка добавить родителя к объекту, , например:

QTableWidgetItem* tempitem = new QTableWidgetItem(mapTableWidget); 
0

Эта проблема в моем коде было произошло из-за логики в cellChanged SLOT. Я пытался установить setText в QTableWidget, который еще не был создан.

Смежные вопросы