Название: QTableView - как установить пустое значение? Отправлено: PavelVX от Июль 18, 2011, 09:33 На форме есть QTableView. Если устанавливать любое значение(1,2,3), то все нормально, а вот если хочу установить пустое(null) значение, то возвращает предыдущее. Подскажите, как быть-то?
Название: Re: QTableView - как установить пустое значение? Отправлено: Пантер от Июль 18, 2011, 09:44 Что за модель используешь? Как устанавливаешь значение?
Название: Re: QTableView - как установить пустое значение? Отправлено: PavelVX от Июль 18, 2011, 09:56 Наследник от QSqlQueryModel, с переопределенными флагами для редактирования, раскраской.
Значения пишутся в базу через переопределенный setData. Но уже туда приходит старое значение, если я пытаюсь пустое значение ручками прописать в QTableView. Редактирую руками. Например нужно убрать не туда проставленное количество. Название: Re: QTableView - как установить пустое значение? Отправлено: Пантер от Июль 18, 2011, 09:57 Реализацию setData покажи.
Название: Re: QTableView - как установить пустое значение? Отправлено: PavelVX от Июль 18, 2011, 10:00 Я использую переделанный пример!
Код
Название: Re: QTableView - как установить пустое значение? Отправлено: Пантер от Июль 18, 2011, 10:03 А query.exec() что возвращает? Если false, то глянь query.lastError ().text ().
Название: Re: QTableView - как установить пустое значение? Отправлено: PavelVX от Июль 18, 2011, 10:12 bool EditableSqlModel::setDataToQuery(QVariant keyValue, int fNumber, const QVariant &value)
{ //если тут сделать так: qDebug() << value; //то когда мы захотим убрать значение, вставить пустышку, то уже сюда придет старое значение. Это-то меня и удивляет :( А как правильно код убирать? Типа как вы мой в нормальный скроллинг убрали. Название: Re: QTableView - как установить пустое значение? Отправлено: Пантер от Июль 18, 2011, 10:18 Странно это все... Можешь минимальный компилябельный пример приложить?
Цитировать А как правильно код убирать? Типа как вы мой в нормальный скроллинг убрали. Для этого есть тег code. Код
Название: Re: QTableView - как установить пустое значение? Отправлено: PavelVX от Июль 18, 2011, 10:24 хмм, а к базе его как цеплять будете?
Переделывать, что бы он к чему-то другому цеплялся нужно время :( teamview не используете? Могу вживую тогда показать :) Название: Re: QTableView - как установить пустое значение? Отправлено: Пантер от Июль 18, 2011, 10:25 Можно попробовать через teamview, давай в личку параметры.
Название: Re: QTableView - как установить пустое значение? Отправлено: Странник от Июль 18, 2011, 10:30 по-моему, надо в сторону setModelData делегата копать, если в setData модели уже старое значение приходит.
Название: Re: QTableView - как установить пустое значение? Отправлено: PavelVX от Июль 18, 2011, 10:38 по-моему, надо в сторону setModelData делегата копать, если в setData модели уже старое значение приходит.
хмм, а это мысль. Правда делегат там по умолчанию похоже ставится. Название: Re: QTableView - как установить пустое значение? Отправлено: Странник от Июль 18, 2011, 10:57 еще меня конкретно смущает, что setData переопределяется для любой роли. корректнее будет
Код: bool EditableSqlModel::setData(const QModelIndex &index, const QVariant &value, int role) Название: Re: QTableView - как установить пустое значение? Отправлено: PavelVX от Июль 18, 2011, 11:24 это ничего не меняет, на входе в эту функцию или старое значене. или новое, не пустое. А как в сторону делегата в данном случае копать? Появляется спинбокс. Или можно как-то вообще запретить делегата для данной колонки?
Название: Re: QTableView - как установить пустое значение? Отправлено: Пантер от Июль 18, 2011, 11:27 Можно своего делегата навесить.
Название: Re: QTableView - как установить пустое значение? Отправлено: Странник от Июль 18, 2011, 11:28 о, тогда уже никуда копать не надо. пустое значение не проходит валидацию в QSpinBox. пишите свой делегат, либо ищите обходные пути для сброса значения. например, по нажатию кнопки записывать в модель нулевое значение через setData.
Название: Re: QTableView - как установить пустое значение? Отправлено: PavelVX от Июль 18, 2011, 12:05 нда, уж сколько раз накалывался на такое: за тебя все придумают, а тебе потом ломать. :( Потому как придуманное не работает :(. Чем дальше. тем меньше мне нравится Qt. Уже и баг один отловил с делегатами и QSqlRelation. :( Для новичка это полный перебор.
Тогда такой вопрос: а что, я могу к к любой модели привинтить своего делегата???? А отвинтить не могу??? Название: Re: QTableView - как установить пустое значение? Отправлено: Пантер от Июль 18, 2011, 12:40 Делегат не к модели прикручивается, а к вьюхе.
Название: Re: QTableView - как установить пустое значение? Отправлено: PavelVX от Июль 20, 2011, 06:58 спасибо!
Создал своего делегета на основе QLineEdit и все заработало как надо. |