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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: баг Qt-4.3.0 QTableView+QSqlTableModel  (Прочитано 7082 раз)
-=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
Записан
-=s0L=-
Гость
« Ответ #1 : Июль 11, 2007, 15:38 »

Не пойму, неужели на всем форуме никто не пишет на Qt приложения для работы с БД?!?!?! Или может все смерились с этим косяком tableview?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #2 : Июль 11, 2007, 15:45 »

Пиши багрепорт, что тут можно сказать.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
SABROG
Гость
« Ответ #3 : Июль 11, 2007, 16:23 »

Цитата: "-=s0L=-"
Не пойму, неужели на всем форуме никто не пишет на Qt приложения для работы с БД?!?!?! Или может все смерились с этим косяком tableview?


Я пишу в данный момент. Только как я уже писал - я не доверяю эту работу всяких sql моделям, а все рисую и сортирую сам, своими запросами. Да это дольше, дедовский способ, но переписывать логику программы из-за косяков Qt мне надоело.
Записан
-=s0L=-
Гость
« Ответ #4 : Июль 11, 2007, 17:34 »

Цитата: "SABROG"

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


Я тоже уже конкретно задолбался, вместо того чтобы прогу писать, сижу ищу обходные пути против косяков Qt... ох как надаело млять....
Вот думаю пока не сильно много написал, много придется переделать или нет...
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Июль 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
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
-=s0L=-
Гость
« Ответ #6 : Июль 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() и они пропадают. Это следует делать всегда, когда в модели не оказывается элементов и при смене способа сортировки.
Записан
-=s0L=-
Гость
« Ответ #7 : Июль 13, 2007, 10:45 »

вот наконец и тролли смогли воспроизвести баг и теперь он числится в http://www.trolltech.com/developer/tasktracker.html по номеру 170783. Надеюсь в следующем релизе поправят.
Записан
svch
Гость
« Ответ #8 : Июль 13, 2007, 13:59 »

Очн надеюсь что пофиксят в 4.3.1 быстрее бы след. релиз!!! У меня вообще такое чувство, что Qt-разработчики каждый день живут ожиданием нового релиза))) И если он выходит тогда наступает-щАстье (на 2-3дня) ит.д.
Записан
crossly
Гость
« Ответ #9 : Сентябрь 24, 2007, 19:43 »

ну вот..... имею ту же проблему.... если нашли выход подскажите.... плиз(qt-4.3.1)
Записан
ритт
Гость
« Ответ #10 : Октябрь 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.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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