Russian Qt Forum
Сентябрь 30, 2024, 12:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableWidgetItem  (Прочитано 6654 раз)
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...Непонимающий?
Записан
zoro86
Гость
« Ответ #1 : Декабрь 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;
Записан
Dendy
Гость
« Ответ #2 : Декабрь 29, 2009, 16:46 »

QTableWidgetItem * QTableWidget::takeItem ( int row, int column )
Removes the item at row and column from the table without deleting it.

Вам действительно нужно удалять ячейку из таблицы?
« Последнее редактирование: Декабрь 29, 2009, 16:55 от Dendy » Записан
Vass
Гость
« Ответ #3 : Декабрь 29, 2009, 16:49 »

проверьте существование curitem перед ее использованием.
и выложите плз backtrace по сегфолту
Записан
zoro86
Гость
« Ответ #4 : Декабрь 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;
сначала считываю а потом кладу....
так он при следующем двойном щелчке не отваливается Строит глазки
Записан
Dendy
Гость
« Ответ #5 : Декабрь 29, 2009, 16:56 »

Вам нужно просто ->takeItem() заменить на ->item()
Записан
zoro86
Гость
« Ответ #6 : Декабрь 30, 2009, 06:53 »

Спс ... вечно у меня все через #опу Смеющийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.12 секунд. Запросов: 20.