Название: QTableWidget и QTableView Отправлено: ruzik от Март 09, 2011, 21:37 Здравствуйте, я сделал делегат(апгрейдил пример под себя), все работает в примере, все отлично, но как только я пытаюсь применить это к моему основному проекту, то все работает кроме одного, у меня делегат- QTimeEdit, и теперь какое-бы значение не было бы в таблице, как только я хочу редактировать оно обнуляется, но если делать это в примере то все нормально, тк в примере QTableView а в программе QTableWidget, возможно еще причина в том что в примере я сам устанавливаю маску, а в основной программе нет, но я думаю что это не столь важно
Код: ted = new TimeEditDelegate;// В аттаче пример Название: Re: QTableWidget и QTableView Отправлено: ruzik от Март 10, 2011, 13:00 Все, спасибо, не надо как ни странно, проблема решилась сама собой
Название: Re: QTableWidget и QTableView Отправлено: ruzik от Март 10, 2011, 18:31 Нет проблема не совсем исчезла, надо присвоить каждому itemу нужный тип и значение, я пытаюсь это сделать
Код: QTime t; Заранее спасибо! Название: Re: QTableWidget и QTableView Отправлено: Karl-Philipp от Март 10, 2011, 18:48 Нет проблема не совсем исчезла, надо присвоить каждому itemу нужный тип и значение, я пытаюсь это сделать В методе setData() порядок аргументов, случаем, не перепутан?Код: QTime t; Заранее спасибо! Название: Re: QTableWidget и QTableView Отправлено: ruzik от Март 10, 2011, 19:01 Да вроде нет
void QTableWidgetItem::setData ( int role, const QVariant & value ) Название: Re: QTableWidget и QTableView Отправлено: GreatSnake от Март 10, 2011, 19:21 Ну дык читай дальше чем заведает Qt::EditRole:
Цитировать Qt::EditRole 2 The data in a form suitable for editing in an editor. (QString) и делай выводы.Название: Re: QTableWidget и QTableView Отправлено: ruzik от Март 10, 2011, 20:03 А какая тогда должна быть роль, я перепробовал все подходящие по смыслу, одна и та жа ошибка
Название: Re: QTableWidget и QTableView Отправлено: GreatSnake от Март 11, 2011, 09:19 Коли ты хочешь отображать в ячейке время, то переведи его в строку используя QTime::toString().
Для простого отображения используй Qt::DisplayRole. Ну и читай ассистент, читай и по-больше... Название: Re: QTableWidget и QTableView Отправлено: ruzik от Март 11, 2011, 10:29 Переводить в QString я думаю бессмысленно, так как
void QTableWidgetItem::setData ( int role, const QVariant & value ) |То есть QTime подходит тоже| Но даже если перевести в QString, то ошибку выдает tableView.item(0,0)->setData(Qt::DisplayRole,t.toString()); Я понимаю что ошибка из-за того что в item есть а элемента в нем как бы нет, то есть он не задан, но ведь по смыслу setData и должен задавать этот элемент и его тип Название: Re: QTableWidget и QTableView Отправлено: GreatSnake от Март 11, 2011, 10:45 Цитировать Но даже если перевести в QString, то ошибку выдает Ну а чего ошибку-то здесь не показать ???Название: Re: QTableWidget и QTableView Отправлено: ruzik от Март 11, 2011, 11:15 Необработанное исключение в "0x0040142f" в "spinboxdelegate.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000".
Название: Re: QTableWidget и QTableView Отправлено: GreatSnake от Март 11, 2011, 11:23 Цитировать Необработанное исключение в "0x0040142f" в "spinboxdelegate.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000". Вот ты странный человек, сколько раз тебе здесь уже говорили - чем больше дашь инфы, тем быстрее тебе помогут.Почему сразу нельзя было показать эту ошибку ??? Цитировать tableView.item(0,0)->setData(Qt::DisplayRole,t.toString()); Вот как раз у тебя item-a то и нет и ты обращаешься по нулевому указателю.Я понимаю что ошибка из-за того что в item есть а элемента в нем как бы нет, то есть он не задан, но ведь по смыслу setData и должен задавать этот элемент и его тип Сначала создай QTableWidgetItem. Потом помести его в виджет через QTableWidget::setItem() и уже потом, если понадобится используй QTableWidgetItem::setData(). А вот setData() должна "задавать" элемент только если будешь применять её к модели. Название: Re: QTableWidget и QTableView Отправлено: ruzik от Март 11, 2011, 14:15 Спасибо
|