Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
lojka |
19.1.2010, 20:25
Сообщение
#1
|
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 24.1.2009 Пользователь №: 506 Спасибо сказали: 0 раз(а) Репутация: 0
|
Здраствуйте. Сразу перейду к делу.
Имею - запрос, вернувший много строк данных, хочу его отобразить, использую представление QTableView и модель QStandardItemModel. Выбор этого типа модели объясняется тем, что эти самые строчки надо отображать "с бантиками", т.е. данные в ячейках надо раскрашивать в различный цвет, текст некоторых строк выделять жирным. Итак, что выходит, пример: Запрос возвращает, скажем, m записей - выделяется память на модель (m, n), - в цикле создаются m * n раз элементы QStandardItem и вставляются в модель (так как модель, до создания этих элементов как бы пустаая, нельзя подкрашивать (setForeground) строки и менять шрифт) - в эти элементы вставляются данные из запроса - там же в цикле m*n раз происходит перекрашиваие текста для элемента (setForeground) итого, то, что я хочу, получается... но получается это ОООООООООЧЧЧЧЧЧЕЕЕЕЕЕЕНЬ медленно. Модели QSqlQueryModel, QSqlTableModel - создают по 5-10к записей на экране за доли секунды, моя же модель будет столько же данных в себя вставлять несколько минут, но к сожалению в QSqlQueryModel, QSqlTableModel нелья цвета тексту в ячейках менять... Посоветуйте направление, в котором копать, что можно использовать, что бы отображать данные, с измененным цветом текста и шрифта, но при этом ускорить процесс записи их в модель отображения их на экране? Спасибо. |
|
|
|
|
BRE |
19.1.2010, 20:31
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Цитата(lojka @ 19.1.2010, 20:25) Link Посоветуйте направление, в котором копать, что можно использовать, что бы отображать данные, с измененным цветом текста и шрифта, но при этом ускорить процесс записи их в модель отображения их на экране? Направление модели + делегаты. |
|
|
|
|
Litkevich Yuriy |
19.1.2010, 20:34
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(lojka @ 19.1.2010, 23:25) Link QSqlQueryModel, QSqlTableModel нелья цвета тексту в ячейках менять... как ты к такому выводу приш(ёл|ла)?
|
|
|
|
|
MoPDoBoPoT |
19.1.2010, 20:36
Сообщение
#4
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: 9
|
Цитата(lojka @ 19.1.2010, 20:25) Link в QSqlQueryModel, QSqlTableModel нелья цвета тексту в ячейках менять... Глубокое заблуждение. Можно либо отнаследоваться и переопределить метод data(), либо воспользоваться делегатом. В интернете много примеров, поищи. Если что-то не понятно - пиши, постараемся помочь. UPD Долго я писал |
|
|
|
|
lojka |
19.1.2010, 21:01
Сообщение
#5
|
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 24.1.2009 Пользователь №: 506 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(Litkevich Yuriy @ 19.1.2010, 20:34) Link Цитата(lojka @ 19.1.2010, 23:25) Link QSqlQueryModel, QSqlTableModel нелья цвета тексту в ячейках менять... как ты к такому выводу приш(ёл|ла)?Пришел Да просто стандартных способов я не увидел, а то, что какими-то окольными путями (которые порой трудны и опасны для неискушенного данной библиотекой человека) можно все что угодно сделать, я догадывался, поэтому тут и задал вопрос, зная, что наверняка есть ответ. Спасиб ребят, мысли ваши воспринял, советы приму к сведенью, даже начало что-то в голове вырисовываться, как доберусь до рабочего компа, попробую реализовать. |
|
|
|
|
Litkevich Yuriy |
19.1.2010, 21:12
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(lojka @ 20.1.2010, 0:01) Link что какими-то окольными путями окольные это какие?
|
|
|
|
|
lojka |
19.1.2010, 21:21
Сообщение
#7
|
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 24.1.2009 Пользователь №: 506 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(Litkevich Yuriy @ 19.1.2010, 21:12) Link Цитата(lojka @ 20.1.2010, 0:01) Link что какими-то окольными путями окольные это какие?Это те, которые далеки от простейшего использования Qt-шных классов (например написание унаследованных классов с переопределением методов, или использование делегатов). Просто я не очень хорошо еще знаю Qt, поэтому считаю эти пути окольными, а не прямыми, ровными, и самими собой разумеющимися |
|
|
|
|
Litkevich Yuriy |
19.1.2010, 22:32
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(lojka @ 20.1.2010, 0:21) Link например написание унаследованных классов с переопределением методов а как же ты окошки делаешь? Ведь нужно создавать наследника QWidget (QDialog или QMainWindow).
|
|
|
|
|
lojka |
20.1.2010, 17:18
Сообщение
#9
|
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 24.1.2009 Пользователь №: 506 Спасибо сказали: 0 раз(а) Репутация: 0
|
Спасиб за советы... реализовал, использовал свою модель, наследующую QSqlQueryModel, переопределением функции data().
Скорость (по сравнению с тем, что было у меня до этого, впечатляет). |
|
|
|
|
Litkevich Yuriy |
20.1.2010, 17:36
Сообщение
#10
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
lojka, вот видишь, это совсем не больно
|
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 22.12.2025, 3:37 |