Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: zoro86 от Декабрь 29, 2009, 16:01



Название: QTableWidgetItem
Отправлено: zoro86 от Декабрь 29, 2009, 16:01
Кто сталкивался с такой проблемой:

У меня в QTableWidget добавляется ячейка:

tableWidgetItem = new QTableWidgetItem();
tableWidgetItem->setSelected(false);
tableWidgetItem->setBackground(QColor(248,248,248,255));
tableWidgetItem->setIcon(QIcon(QString(":/images/status/printer.png")));
tableWidgetItem->setToolTip(QString("Распечатать чек"));
tableWidgetItem->setTextAlignment(3);

tableWidget->setItem(kooki,7,tableWidgetItem);

так вот при двойном щелчке прога вываливается и пишет... Segmentation fault

скорее всего из за того что там иконка...

так вот есть ли какой метод чтобы запретить редактирование QTableWidgetItem...????


Название: Re: QTableWidgetItem
Отправлено: zoro86 от Декабрь 29, 2009, 16:42
Он отваливается именно когда я в слоте на двойной щелчек пишу...
int row = item->row();
   if (Debuger) qDebug() << row;
   
   QTableWidgetItem *curitem = tableWidget->takeItem(row,6);
      
      QString idTrn = curitem->text();
      if (Debuger) qDebug() << idTrn;


Название: Re: QTableWidgetItem
Отправлено: Dendy от Декабрь 29, 2009, 16:46
QTableWidgetItem * QTableWidget::takeItem ( int row, int column )
Removes the item at row and column from the table without deleting it.

Вам действительно нужно удалять ячейку из таблицы?


Название: Re: QTableWidgetItem
Отправлено: Vass от Декабрь 29, 2009, 16:49
проверьте существование curitem перед ее использованием.
и выложите плз backtrace по сегфолту


Название: Re: QTableWidgetItem
Отправлено: zoro86 от Декабрь 29, 2009, 16:50
не удалять не надо .. я проста на печать отправляю чек...

вообщем сделал так ..
int row = item->row();
   if (Debuger) qDebug() << row;
   
   QTableWidgetItem *curitem = tableWidget->takeItem(row,6);
      
      QString idTrn = curitem->text();
      
   QTableWidgetItem *curitemNew = new QTableWidgetItem(idTrn);
   tableWidget->setItem(row,6,curitemNew);
   
      if (Debuger) qDebug() << idTrn;
сначала считываю а потом кладу....
так он при следующем двойном щелчке не отваливается ::)


Название: Re: QTableWidgetItem
Отправлено: Dendy от Декабрь 29, 2009, 16:56
Вам нужно просто ->takeItem() заменить на ->item()


Название: Re: QTableWidgetItem
Отправлено: zoro86 от Декабрь 30, 2009, 06:53
Спс ... вечно у меня все через #опу ;D