Название: QTableWidgetItem. Ошибка segmentation fault при добавлении Отправлено: varkon от Июнь 28, 2010, 09:23 Доброго дня.
Есть такой код: Код: ui->twMain->insertRow(ui->twMain->rowCount()); Причем проблема возникает именно при добавлении данных в 4, 5 и 6 столбцах соотвественно. Не важно каких. В данном случае читаются значения QDoubleSpinBox-в которые находятся на модальной форме. Объекты полностью доступны и содержат корректные данные. Предварительно таблица заполняется следующим кодом: Код: QTableWidget *tb = (QTableWidget*)sender; Название: Re: QTableWidgetItem. Ошибка segmentation fault при добавлении Отправлено: RoS от Июнь 28, 2010, 14:50 Несомненно в том, что где-то не создаешь итема, потому что segmentatio nfault всегда с этим связан - обращение к нуллу, запусти дебаг - и поймешь!
Название: Re: QTableWidgetItem. Ошибка segmentation fault при добавлении Отправлено: varkon от Июнь 28, 2010, 15:23 угу. спасибо кеп. :)
Понятно, что где-то идет обращение к несозданному объекту. Вопрос - почему именно в этих трех строках? И почему абсолютно такой же код при создании таблицы отрабатывает нормально? Я грешил на компоненты, которые находятся на форме (QDoubleSpinBox) - но обращение к ним не создает никаких проблем. Теряется указатель именно в данных трех строках - причем видимой причины нет. Я потому и разместил код - может бытья упустил что-то? Выбрасывает в функции класса QTableWidgetItem Код: inline QString text() const Название: Re: QTableWidgetItem. Ошибка segmentation fault при добавлении Отправлено: galilley от Июнь 28, 2010, 16:08 А сигналы на изменение данных в item-ах не ловите? Эти сигналы, похоже, испускаются и при вызове setItem, и если там, скажем, для подсчёта суммы идёт обращение к итемам, которые ещё не созданы, то понятно что будет.
Название: Re: QTableWidgetItem. Ошибка segmentation fault при добавлении Отправлено: pastor от Июнь 28, 2010, 16:53 Цитировать В данном случае читаются значения QDoubleSpinBox-в которые находятся на модальной форме. Покажи код этого диалога. Если у него установлен аттрибут Qt::WA_DeleteOnClose - отсюда и все проблемы. Название: Re: QTableWidgetItem. Ошибка segmentation fault при добавлении Отправлено: varkon от Июнь 28, 2010, 21:42 А сигналы на изменение данных в item-ах не ловите? Эти сигналы, похоже, испускаются и при вызове setItem, и если там, скажем, для подсчёта суммы идёт обращение к итемам, которые ещё не созданы, то понятно что будет. да не ловлю в том то и дело.Код: Покажи код этого диалога. Если у него установлен аттрибут Qt::WA_DeleteOnClose - отсюда и все проблемы. Код создания диалога: Код: AddItems *ad = new AddItems(this); Название: Re: QTableWidgetItem. Ошибка segmentation fault при добавлении Отправлено: varkon от Июнь 28, 2010, 21:55 А сигналы на изменение данных в item-ах не ловите? Эти сигналы, похоже, испускаются и при вызове setItem, и если там, скажем, для подсчёта суммы идёт обращение к итемам, которые ещё не созданы, то понятно что будет. вы оказались правы. Причина все же в обработке сигнала cellChanged. Название: Re: QTableWidgetItem. Ошибка segmentation fault при добавлении Отправлено: varkon от Июнь 28, 2010, 22:23 вобщем как всегда - никакой мистики.
Когда новый документ - то все отрабатывало без ошибок, потому что в состоянии "Новый документ" данное событие не нужно, и естественно обработка не выполнялась (проверялось текущее состояние формы). Тоже самое и с загрузкой документа. Выяснилось это случайно - была сделана попытка добавить запись уже к проведенному документу - в этом случае пользователю выдается сообщение. Всем спасибо за помощь. Название: Re: QTableWidgetItem. Ошибка segmentation fault при добавлении Отправлено: crossly от Июнь 29, 2010, 08:44 может к модели больше подойдет QTableView ??
Название: Re: QTableWidgetItem. Ошибка segmentation fault при добавлении Отправлено: varkon от Июнь 29, 2010, 09:33 может к модели больше подойдет QTableView ?? Ну в данном случае QTableWidget хватает с головой, потому как для QTableView необходимо будет реализовать собственную модель данных (это планируется, но не сейчас). |