Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: -=s0L=- от Июль 08, 2007, 12:54



Название: баг Qt-4.3.0 QTableView+QSqlTableModel
Отправлено: -=s0L=- от Июль 08, 2007, 12:54
Обнаружил досадный баг, если юзать QTableView с sql то происходят странные вещи при установке фильтра setFilter когда ни одна запись не соответствует фильтру. Начинают рисоваться новые пустые строки в таблице, потом появляется скроллинг, строки на клики не реагируют. При установке фильтра каждый раз добавляются строки, а если при этом нажать на хидер (сортировка), то опять добавляются строки.
Косяк даже в их sample проявляется. В Qt-4.2.0 все нормально.

добавлено спустя 1 час 3 минуты:

 Если в примере sql/masterdetail подправить базу (закомментить альбомы одного из артистов в файле database.h строки 65-69) и поменять albumView->setShowGrid(false) на albumView->setShowGrid(true)  строке 280 файла mainwindow.cpp то при выборе разных из списка артистов можно увидеть эти чудеса.

Как выглядит можно увидеть здесь http://vksite.fatal.ru/qtbug.png


Название: баг Qt-4.3.0 QTableView+QSqlTableModel
Отправлено: -=s0L=- от Июль 11, 2007, 15:38
Не пойму, неужели на всем форуме никто не пишет на Qt приложения для работы с БД?!?!?! Или может все смерились с этим косяком tableview?


Название: баг Qt-4.3.0 QTableView+QSqlTableModel
Отправлено: pastor от Июль 11, 2007, 15:45
Пиши багрепорт, что тут можно сказать.


Название: баг Qt-4.3.0 QTableView+QSqlTableModel
Отправлено: SABROG от Июль 11, 2007, 16:23
Цитата: "-=s0L=-"
Не пойму, неужели на всем форуме никто не пишет на Qt приложения для работы с БД?!?!?! Или может все смерились с этим косяком tableview?


Я пишу в данный момент. Только как я уже писал - я не доверяю эту работу всяких sql моделям, а все рисую и сортирую сам, своими запросами. Да это дольше, дедовский способ, но переписывать логику программы из-за косяков Qt мне надоело.


Название: баг Qt-4.3.0 QTableView+QSqlTableModel
Отправлено: -=s0L=- от Июль 11, 2007, 17:34
Цитата: "SABROG"

Я пишу в данный момент. Только как я уже писал - я не доверяю эту работу всяких sql моделям, а все рисую и сортирую сам, своими запросами. Да это дольше, дедовский способ, но переписывать логику программы из-за косяков Qt мне надоело.


Я тоже уже конкретно задолбался, вместо того чтобы прогу писать, сижу ищу обходные пути против косяков Qt... ох как надаело млять....
Вот думаю пока не сильно много написал, много придется переделать или нет...


Название: баг Qt-4.3.0 QTableView+QSqlTableModel
Отправлено: pastor от Июль 11, 2007, 18:14
2 -=s0L=-: Если ты говоришь, что Qt 4.2.0 не глючит - юзай её. Откуда такое рвение перейти на Qt 4.3.0? Qt 4.3.0 ещё сырая. После первого-второго баг релиза можно уже подумать и про неё. Чего тебе не хватает в Qt 4.2.x? У мня 4.3.0 стоит чисто для ознакомления, пишу на 4.2.3


Название: баг Qt-4.3.0 QTableView+QSqlTableModel
Отправлено: -=s0L=- от Июль 12, 2007, 13:11
Цитата: "pastor"
2 -=s0L=-: Если ты говоришь, что Qt 4.2.0 не глючит - юзай её. Откуда такое рвение перейти на Qt 4.3.0? Qt 4.3.0 ещё сырая. После первого-второго баг релиза можно уже подумать и про неё. Чего тебе не хватает в Qt 4.2.x? У мня 4.3.0 стоит чисто для ознакомления, пишу на 4.2.3


в том и дело, я сначала забил на 4.3 начал юзать 4.2, но тут посыпалась куча других лагов, которые в 4.3 уже пофиксены... вот и метаюсь, задолбался уже.

А с этим багом я долго разбирался, весь финт в том, что если в модели нет элементов, то таблица рисует одну пустую строку, по которой даже щелкать нельзя, ну вроде нормальная ситуация. Но когда в модели появляются элементы эта инвалидная строчка просто не исчезает! Она нигде не числится, и так и повисает в таблице как доп. строчка. Все бы ничего, т.к. таблица строчку как бы "не видит", то если снова в модели не оказывается элементов, то добавляется еще одна такая строка, и так каждый раз при обновлении, когда модель пуста. В итоге после некоторого юзанья таблички пользователем, внизу повисает туча этих сраных строк, которые к тому же еще вызывают скроллинг. Если бы не скроллинг, то их легко спрятать, отключив прорисовку грида. Вот такие пироги...

добавлено спустя 14 часов 5 минут:

 Ну вот опять :(
Теперь грид в TableView при горизонтальном скролинге неправильно перерисовывается... епт, когда кончатся эти муки ©.....
Скажите пожалуйста, за какой хрен они берут по 3 шмотка зеленых за каждую платформу?!?!

добавлено спустя 2 часа 58 минут:

 Эх наконец нашел как исправить... После трепанации исходников TableView стало понятно, что дело в вертикальном QHeaderView. Чтобы убрать эти инвалидные строки надо вызвать table->verticalHeader()->reset() и они пропадают. Это следует делать всегда, когда в модели не оказывается элементов и при смене способа сортировки.


Название: баг Qt-4.3.0 QTableView+QSqlTableModel
Отправлено: -=s0L=- от Июль 13, 2007, 10:45
вот наконец и тролли смогли воспроизвести баг и теперь он числится в http://www.trolltech.com/developer/tasktracker.html по номеру 170783. Надеюсь в следующем релизе поправят.


Название: баг Qt-4.3.0 QTableView+QSqlTableModel
Отправлено: svch от Июль 13, 2007, 13:59
Очн надеюсь что пофиксят в 4.3.1 быстрее бы след. релиз!!! У меня вообще такое чувство, что Qt-разработчики каждый день живут ожиданием нового релиза))) И если он выходит тогда наступает-щАстье (на 2-3дня) ит.д.


Название: Re: баг Qt-4.3.0 QTableView+QSqlTableModel
Отправлено: crossly от Сентябрь 24, 2007, 19:43
ну вот..... имею ту же проблему.... если нашли выход подскажите.... плиз(qt-4.3.1)


Название: Re: баг Qt-4.3.0 QTableView+QSqlTableModel
Отправлено: ритт от Октябрь 04, 2007, 00:12
http://trolltech.com/developer/notes/changes/changes-4.3.2/

Цитировать
    * [170783] Fixed a bug that caused empty rows to be displayed in a
      QTableView when a new model was set on the view. This was caused by
      QSqlTableModel emitting the rowsAboutToBeInserted() and rowsInserted()
      signals even when the new model was empty.