Russian Qt Forum
Июнь 16, 2024, 03:10
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Кривая работа QTableView
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Кривая работа QTableView (Прочитано 5666 раз)
LamerDrv
Гость
Кривая работа QTableView
«
:
Август 04, 2005, 19:16 »
Народ, а что это у них с гридом. В смысле с тем, который зовется QTableView. Как он видет себя при отображении данных из БД . Это же безобразие какое-то! А что пишут в доке:
The QDataTable class has been renamed Q3DataTable and moved to the Qt3Support library. It is expected that Qt 4.1 will offer a replacement class. In the meantime, you can use Q3DataTable for creating data-aware forms or you can roll your own.
Подождите стало быть нормального компонента до QT 4.1 или выкручивайтесь как хотите (причем Q3DataTable нет редакторе форм, так что его еще надо туда прикручивать или создавать в своем коде ручками ).
Все на борьбу с гридом! :!: … т.е. не с гридом а за грид.
Во-первых глюк с пропаданием индикатора текущей позиции в тот момент, когда происходит подчитка (fetch) данных из базы. Увидеть его можно на таблицах содержащих более 256 записей: переходим на 256-ю запись (в этот момент вертикальный скроллер находится в самом низу потому что остальные записи еще не считаны), затем жмем мышкой стрелку вниз на скроллере … и в этот момент индикатор текущей позиции исчезает.
По этому поводу предлагаю следующее:
в строке 419 файла qabstractitemmodel.cpp знак ‘>=’ заменить на ‘>’. Т.е. вместо
if (index.isValid() && index.parent() == parent && index.row()
>=
first)
написать
if (index.isValid() && index.parent() == parent && index.row()
>
first)
Хотелось бы услышать мнение людей имеющих большой опыт работы с QT. Может быть есть более идеологически правильное решение ? Да и это потестить бы не мешало, а то вдруг не для всех ситаций подходит.
Во-вторых клавиатура. Это ж просто песня. Когда доходим до 256 записи, то прокрутить дальше можно только мышкой. Сколько не дави на курсорные клавиши на клаве - все равно получишь шайбу.
Записан
jindos
Гость
Кривая работа QTableView
«
Ответ #1 :
Август 05, 2005, 08:53 »
К сожалению, для Qt такие глюки при работе с таблицами не новость(((... В таких случаях на самом деле нужно лезть в исходники и править все под себя... Поэтому исправляй и пиши, что получилось...
Записан
LamerDrv
Гость
Кривая работа QTableView
«
Ответ #2 :
Август 06, 2005, 15:47 »
Решение о внесении изменений в 419-ую строку файла qabstractitemmodel.cpp (в метод void QAbstractItemModelPrivate::rowsAboutToBeInserted) оказалось неверным. Эта модификация вроде бы исправляет глюк с пропаданием индикатора текущей позиции в момент дочитки записей, но при этом нарушает семантику метода rowsAboutToBeInserted. Ошибка не в самом методе rowsAboutToBeInserted, а в коде который вызывает этот метод - вызывает с неправильными параметрами. Поднимаемся вверх по стеку вызовов и попадаем в метод
void QSqlQueryModelPrivate::prefetch(int limit)
Именно, в нем формируются значения, которые затем попадают в метод QAbstractItemModelPrivate::rowsAboutToBeInserted.
Проще всего, по-моему, внести исправление в строке
emit q->beginInsertRows(QModelIndex(), oldBottom.row(), newBottom.row()); (строка 55 файла qsqlquerymodel.cpp )
заменив ее на
emit q->beginInsertRows(QModelIndex(), oldBottom.row()+1, newBottom.row()+1);
У меня после этого изменения работает нормально.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...