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

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

Страниц: 1 [2] 3 4 ... 6   Вниз
  Печать  
Автор Тема: Генератор отчетов CuteReport 1.3.1 (обновляется)  (Прочитано 75029 раз)
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #15 : Октябрь 07, 2014, 18:43 »

Сегодня наскреб проблем по отчетам. Тяжко в тикеты на аглицком всё это писать, потом то, что действительно надо, перенесу.

https://docs.google.com/document/d/1_HW5xEVysN6veJv8Gwjd6ivmLaQvVOzCpkpCzihFifY/pub

Для RC - многовато  Подмигивающий
« Последнее редактирование: Октябрь 07, 2014, 18:46 от navrocky » Записан

Гугль в помощь
AlFoX
Гость
« Ответ #16 : Октябрь 07, 2014, 21:25 »

Ну без англицского в наше время никуда Подмигивающий

отвечу по порядку так как там без нумерации:
1)привязка с сетке есть в свойствах страницы (useGrid)
2)множественное присвоение свойств - ведется работа. Так как это не будет затрагивать архитектуру, может быть сделано уже после релиза
3)ведется работа. будет в релизе
4)это фича. Корневой каталог из которого выйти нельзя указан в свойствах сторажда. для фаловой системы это "Filesystem"
5)уже реализовано - будет в релизе
6)Undo/Redo есть пока только в коммерческой версии.
7)должно работать - надо оформить тикет и разбираться
8 )не совсем понятно - надо фичреквест с примером.
9) почему MitterJoin надо по дефолту? Хотелось бы обоснования.
10) Падение дизайнера - надо более подробно как повторить. и тикет в багтрекер
11) это регрессия - уже исправлена в гите.

Проблемы при генерации отчета:
1) вероятно баг - нужен тикет
2) рамка и должна расти внутрь, так как размер объекта это его внешняя сторона. все оформление растет внутрь как сделано в FastReport и как делается в обычных QWidget. Стыковка объектов происходит по этой границе.

>>Для RC - многовато  Подмигивающий
Учитывая что багрепортов не так много, пути, кроме как выпустить релиз и форсировать тестирование, нету Улыбающийся
« Последнее редактирование: Октябрь 07, 2014, 21:34 от AlFoX » Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #17 : Октябрь 08, 2014, 09:01 »

9) почему MitterJoin надо по дефолту? Хотелось бы обоснования.
Как правило везде углы острые (word, и т.д.), без скосов. MitterJoin - это как раз оно. А у вас BevelJoin по дефолту и у всех рамок с шириной больше нуля углы срезанные.

2) рамка и должна расти внутрь, так как размер объекта это его внешняя сторона. все оформление растет внутрь как сделано в FastReport и как делается в обычных QWidget. Стыковка объектов происходит по этой границе.

С этим не согласен, не знаю как там в fastreport, но если мы посмотрим в word, openoffice, в любой векторный редактор, то там рамка растет равномерно в обе стороны. И это удобно, так как при совмещении границы рядом стоящих блоков их рамка тоже совмещается, а не удваиваится.

То что хорошо для QWidget, не годится для печати. Поэтому, для того, чтобы не ломать совместимость у вас с существующими отчетами, предлагаю ввести свойство у блока, регулирующее поведение рамки, по умолчанию пусть будет как сейчас - внутрь.

В аттаче я привел пример двух способов.

>>Для RC - многовато  Подмигивающий
Учитывая что багрепортов не так много, пути, кроме как выпустить релиз и форсировать тестирование, нету Улыбающийся

Видать только одному мне нужны отчеты ( Я еще видел Exaro, но они были совсем сырые.

Попутно хотел задать вопрос, если я хочу грузить отчёт из ресурса какого вида URL должен быть? У меня ":/reports/myreport.rpt" не прокатывает, при этом через QFile он открывается.

Уже разобрался, надо так: "file::/reports/myreport.rpt"
« Последнее редактирование: Октябрь 08, 2014, 09:14 от navrocky » Записан

Гугль в помощь
AlFoX
Гость
« Ответ #18 : Октябрь 08, 2014, 09:24 »

C доводами по 9 и 2 пункту согласен, надо будет подкорректировать. Рамки оно, впринципe, так и рисует по умолчании в QGraphicsFramework, но надо будет подумать как это сделать правильно чтобы, объекты правильно перекрывались.

Пока что нету метода для чтения из ресурса приложения. Не думаю что это хорошая идея, так как, насколько я помню, память под ресурсы ограничена, а файл отчета может быть большим. Но если очень надо то можно добавить.
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #19 : Октябрь 08, 2014, 17:13 »

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

Память под ресурсы ограничена только свободным местом на диске и количество оперативной памяти. Более того RCC по умолчанию ресурсы пакует с помощью zlib и ваш XML должен очень хорошо пожаться.

Ну, собственно, через "file::" оно работает, больше ничего не надо. Разве, что в доке этот факт отразить, чтобы другие не гадали.

PS. Можете в шапке добавить ссылку на доку на гитхабе, чтобы не разыскивать её по теме?
Я, кстати, тестил RC1, только сейчас заметил, что уже RC3 есть, сейчас буду новый отчет катать Смеющийся

Вижу уже есть хранилище Standard::Resource, видимо тогда все эти "file::" уже не нужны...
« Последнее редактирование: Октябрь 08, 2014, 18:00 от navrocky » Записан

Гугль в помощь
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #20 : Октябрь 08, 2014, 18:28 »

1) Сделал свою модель наследником от QStandardItemModel,
2) Засунул её в reportObject с помощью метода reportObject->setVariableValue("root",qlonglong(myModel)); как расписано в этом примере: https://github.com/AlFoX/CuteReport-Docs/blob/master/en/datasets/model_dataset.md
3) Вставил в memo в отчете вызов значения [root."myField"]
4) При исполнении в логах отчет говорит, что не видит переменной root

Что я делаю не так?

В сорцах вижу, что появилась DatasetModel, но как её использовать на первый взгляд для меня не ясно. И главное, надо ли это в моем случае?
Записан

Гугль в помощь
AlFoX
Гость
« Ответ #21 : Октябрь 08, 2014, 18:59 »

Цитировать
Вижу уже есть хранилище Standard::Resource, видимо тогда все эти "file::" уже не нужны...
На вский случай чтобы не путать. этот сторажд для интегрирования объектов таких как картинки или данные прямо в файл отчета. Это не тот QRC файл, который делает Qt. Т.е с ресурсов приложения он не читает.

Насчет сжатия XML да, но в случае интегрирования в него данных и бинарных объектов, файлов локализации и пр. он может быть довольно большим.

Цитировать
Что я делаю не так?
CuteReport не работает ни с какими данными напрямую, только через датасеты. поэтому передать ссылку на модель не достаточно. Нужно добавить в отчет нужный датасет, в вашем случае ModelDataset. И вот он уже правильно разберет вашу модель и представит стандарный интерфейс к ней в ядро CuteReport. Важно чтобы имя датасета совпадало с именем переменной, которую вы передаете в отчет. в данном случае датасет должен быть назван "root"
« Последнее редактирование: Октябрь 08, 2014, 19:11 от AlFoX » Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #22 : Октябрь 09, 2014, 10:21 »

Что-то пока не взлетает у меня.

1) Добавил в отчет dataset Standard::Model, назвал его root, указал sourceModelName: root.
2) Добавил колонки по количеству колонок в моей модели, при этом я не понял как их переименовать, чтобы не было 1,2,3
3) Band'у назначил dataset "root"
3) Добавил мою модель с одной строкой данных в коде как в предыдущем посте.
4) Cделал два пробных поля: [root."1"] и [root."report_date"]

В итоге, вместо значений - undefined

Как-то всё это не интуитивно. Логично было бы просто добавить dataset с моделью из кода, или из кода найти dataset по имени и назначить ему модель. И колонки в dataset по идее надо уметь именовать.

Ну и нужен работоспособный пример в документации, так как это один из ключевых моментов.

Выхлоп в логе:
Код:
======= Log general settings =========
level 'debug'(1)
level 'info'(2)
level 'error'(3)
level 'warning'(4)
level 'critical'(5)
level 'metric'(6)
Log level 'debug'(1):  Destinations: console:1 file:0
Log level 'info'(2):  Destinations: console:1 file:0
Log level 'error'(3):  Destinations: console:1 file:0
Log level 'warning'(4):  Destinations: console:1 file:0
Log level 'critical'(5):  Destinations: console:1 file:0
Log level 'metric'(6):  Destinations: console:1 file:0
Log is synchronous
11:16:27  ReportCore               Version ^ CuteReport version: 1.0
11:16:27  ReportCore               Plugin dir: /home/vlad/prog/Player/debug/bin/cutereport/plugins
11:16:27  ReportCore               Loading plugin: libArc
11:16:27  ReportCore               Loading plugin: libBarcode
11:16:27  ReportCore               Loading plugin: libChart
11:16:27  ReportCore               Loading plugin: libChord
11:16:27  ReportCore               Loading plugin: libDatasetCSV
11:16:27  ReportCore               Loading plugin: libDatasetFileSystem
11:16:27  ReportCore               Loading plugin: libDatasetModel
11:16:27  ReportCore               Loading plugin: libDatasetSQL
11:16:27  ReportCore               Loading plugin: libDetail
11:16:27  ReportCore               Loading plugin: libDetailFooter
11:16:27  ReportCore               Loading plugin: libDetailHeader
11:16:27  ReportCore               Loading plugin: libEllipse
11:16:27  ReportCore               Loading plugin: libExportPDF
11:16:27  ReportCore               Loading plugin: libForm
11:16:27  ReportCore               Loading plugin: libImage
11:16:27  ReportCore               Loading plugin: libLine
11:16:27  ReportCore               Loading plugin: libMemo
11:16:27  ReportCore               Loading plugin: libOverlay
11:16:27  ReportCore               Loading plugin: libPage
11:16:27  ReportCore               Loading plugin: libPageFooter
11:16:27  ReportCore               Loading plugin: libPageHeader
11:16:27  ReportCore               Loading plugin: libPie
11:16:27  ReportCore               Loading plugin: libPrinter
11:16:27  ReportCore               Loading plugin: libRectangle
11:16:27  ReportCore               Loading plugin: libRenderer
11:16:27  ReportCore               Loading plugin: libScript
11:16:27  ReportCore               Loading plugin: libSerializerXML
11:16:27  ReportCore               Loading plugin: libStorageFileSystem
11:16:27  ReportCore               Loading plugin: libStorageGIT
11:16:27  ReportCore               Loading plugin: libStorageResource
11:16:27  ReportCore               Loading plugin: libStorageSQL
11:16:27  ReportCore               Loading plugin: libSummary
11:16:27  ReportCore               Loading plugin: libTitle
11:16:27  Page                     38 format(s) are recognized
11:16:27  ReportCore               Import plugins not found!
2014-Oct-09 11:16:27.057879 D:  2105908 TH:0 (verb)0 HttpClient: <affb868d> #9 GET url: http://127.0.0.1:8080/v1/viewreports/2, data: ""
2014-Oct-09 11:16:27.937554 D:   879675 TH:0 (verb)0 HttpClient: <0463a785> #9 Reply: 1899 bytes
2014-Oct-09 11:16:27.943728 D:     6174 TH:0 (dbg )1 Tools: !!! "Standard::Page"
2014-Oct-09 11:16:27.943943 D:      215 TH:0 (dbg )1 Tools: !!! CuteReport::ReportInterface(0x17dec80, name = "report")
2014-Oct-09 11:16:27.944083 D:      140 TH:0 (dbg )1 Tools: !!! Page(0x2178f00, name = "page")
2014-Oct-09 11:16:27.944204 D:      121 TH:0 (dbg )1 Tools: !!! Page(0x2178f00, name = "page")
2014-Oct-09 11:16:27.953111 D:     8907 TH:0 (dbg )1 Tools: !!! 33
11:16:27  ReportPreview            run
11:16:27  ReportCore               render '25029760'
11:16:27  ReportCore               _render
11:16:27  Renderer                 started
11:16:27  ReportCore               serializer :Standard::XML
2014-Oct-09 11:16:27.986748 D:    33637 TH:0 (dbg )1 Tools: !!! "Standard::Page"
2014-Oct-09 11:16:27.986935 D:      187 TH:0 (dbg )1 Tools: !!! CuteReport::ReportInterface(0x21f78a0, name = "report_1")
2014-Oct-09 11:16:27.987037 D:      102 TH:0 (dbg )1 Tools: !!! Page(0x2194950, name = "page")
2014-Oct-09 11:16:27.987128 D:       91 TH:0 (dbg )1 Tools: !!! Page(0x2194950, name = "page")
2014-Oct-09 11:16:27.992533 D:     5405 TH:0 (dbg )1 Tools: !!! 33
2014-Oct-09 11:16:27.994788 D:     2255 TH:0 (dbg )1 Tools: !!! 33
11:16:27  Renderer::Processor      start thread id: 23462272  processor thread id: 36531984
11:16:28  Renderer::Processor      Preparing dataset 'root'
11:16:28  ReportCore               Renderer started for report: report
11:16:28  Renderer::Processor      started
11:16:28  Renderer::Processor      run thread id 36531984
11:16:28  Renderer::Processor      rendering page: page
11:16:28  Renderer::Processor      renderReportPage: page
11:16:28  ReportCore               Rendering report 'report': page 1 of 0
11:16:28  Renderer::Processor      process band: page header
11:16:28  Renderer::Processor      processing item: memo
11:16:28  Renderer::Processor      processing item: memo_1
11:16:28  Renderer::Processor      processing item: memo_3
11:16:28  Renderer::Processor      processing item: memo_4
11:16:28  Renderer::Processor      deploy item: memo
11:16:28  Renderer::Processor      deploy item: memo_1
11:16:28  Renderer::Processor      deploy item: memo_3
11:16:28  Renderer::Processor      deploy item: memo_4
11:16:28  Renderer::Processor      renderingEndItem item: memo
11:16:28  Renderer::Processor      renderingEndItem item: memo_1
11:16:28  Renderer::Processor      renderingEndItem item: memo_3
11:16:28  Renderer::Processor      renderingEndItem item: memo_4
11:16:28  Renderer::Processor      process band: page footer
11:16:28  Renderer::Processor      processing item: memo_18
11:16:28  Renderer::Processor      processing item: memo_19
11:16:28  Renderer::Processor      deploy item: memo_18
11:16:28  Renderer::Processor      deploy item: memo_19
11:16:28  Renderer::Processor      renderingEndItem item: memo_18
11:16:28  Renderer::Processor      renderingEndItem item: memo_19
11:16:28  Renderer::Processor      checking band: page header
11:16:28  Renderer::Processor      checking band: detail_1
11:16:28  Renderer::Processor      rendering dataset: root
11:16:28  Renderer::Processor      process band: detail_1
11:16:28  Renderer::Processor      processing item: memo_7
11:16:28  Renderer::Processor      processing item: rectangle
11:16:28  Renderer::Processor      processing item: memo_8
11:16:28  Renderer::Processor      processing item: memo_5
11:16:28  Renderer::Processor      processing item: memo_6
11:16:28  Renderer::Processor      deploy item: memo_7
11:16:28  Renderer::Processor      deploy item: rectangle
11:16:28  Renderer::Processor      deploy item: memo_8
11:16:28  Renderer::Processor      deploy item: memo_5
2014-Oct-09 11:16:28.061941 D:       36 TH:1 (dbg )1 syslog: Thread #1 with id=7fc43bfff700
2014-Oct-09 11:16:28.061941 D:       36 TH:1 (dbg )1 Tools: !!! "error evaluating renderer.run ReferenceError: Can't find variable: comments"
11:16:28  Renderer::Processor      deploy item: memo_6
11:16:28  Renderer::Processor      renderingEndItem item: memo_7
11:16:28  Renderer::Processor      renderingEndItem item: rectangle
11:16:28  Renderer::Processor      renderingEndItem item: memo_8
11:16:28  Renderer::Processor      renderingEndItem item: memo_5
11:16:28  Renderer::Processor      renderingEndItem item: memo_6
11:16:28  Renderer::Processor      checking band: detail
11:16:28  Renderer::Processor      process band: detail
11:16:28  Renderer::Processor      processing item: memo_2
11:16:28  Renderer::Processor      processing item: memo_9
11:16:28  Renderer::Processor      script evaluation error for item 'memo_9' ^ script evaluation error for item 'memo_9': script error at line 1
ReferenceError: Can't find variable: warnings
11:16:28  Renderer::Processor      script evaluation error for item 'memo_9' ^ script evaluation error for item 'memo_9': script error at line 1
ReferenceError: Can't find variable: warnings
11:16:28  Renderer::Processor      processing item: memo_10
11:16:28  Renderer::Processor      script evaluation error for item 'memo_10' ^ script evaluation error for item 'memo_10': script error at line 1
ReferenceError: Can't find variable: warnings
11:16:28  Renderer::Processor      deploy item: memo_2
11:16:28  Renderer::Processor      deploy item: memo_9
11:16:28  Renderer::Processor      deploy item: memo_10
11:16:28  Renderer::Processor      renderingEndItem item: memo_2
11:16:28  Renderer::Processor      renderingEndItem item: memo_9
11:16:28  Renderer::Processor      renderingEndItem item: memo_10
11:16:28  Renderer::Processor      checking band: detail_2
11:16:28  Renderer::Processor      process band: detail_2
11:16:28  Renderer::Processor      processing item: memo_11
11:16:28  Renderer::Processor      processing item: rectangle_1
11:16:28  Renderer::Processor      processing item: memo_12
11:16:28  Renderer::Processor      processing item: memo_13
11:16:28  Renderer::Processor      processing item: memo_14
11:16:28  Renderer::Processor      deploy item: memo_11
11:16:28  Renderer::Processor      deploy item: rectangle_1
11:16:28  Renderer::Processor      deploy item: memo_12
11:16:28  Renderer::Processor      deploy item: memo_13
11:16:28  Renderer::Processor      deploy item: memo_14
11:16:28  Renderer::Processor      renderingEndItem item: memo_11
11:16:28  Renderer::Processor      renderingEndItem item: rectangle_1
11:16:28  Renderer::Processor      renderingEndItem item: memo_12
11:16:28  Renderer::Processor      renderingEndItem item: memo_13
11:16:28  Renderer::Processor      renderingEndItem item: memo_14
11:16:28  Renderer::Processor      checking band: detail_3
11:16:28  Renderer::Processor      process band: detail_3
11:16:28  Renderer::Processor      processing item: memo_15
11:16:28  Renderer::Processor      processing item: memo_16
11:16:28  Renderer::Processor      script evaluation error for item 'memo_16' ^ script evaluation error for item 'memo_16': script error at line 1
ReferenceError: Can't find variable: comments
11:16:28  Renderer::Processor      script evaluation error for item 'memo_16' ^ script evaluation error for item 'memo_16': script error at line 1
ReferenceError: Can't find variable: comments
11:16:28  Renderer::Processor      processing item: memo_17
11:16:28  Renderer::Processor      script evaluation error for item 'memo_17' ^ script evaluation error for item 'memo_17': script error at line 1
ReferenceError: Can't find variable: comments
11:16:28  Renderer::Processor      deploy item: memo_15
11:16:28  Renderer::Processor      deploy item: memo_16
11:16:28  Renderer::Processor      deploy item: memo_17
11:16:28  Renderer::Processor      renderingEndItem item: memo_15
11:16:28  Renderer::Processor      renderingEndItem item: memo_16
11:16:28  Renderer::Processor      renderingEndItem item: memo_17
11:16:28  Renderer::Processor      checking band: detail_4
11:16:28  Renderer::Processor      process band: detail_4
11:16:28  Renderer::Processor      processing item: memo_20
11:16:28  Renderer::Processor      processing item: memo_21
11:16:28  Renderer::Processor      deploy item: memo_20
11:16:28  Renderer::Processor      deploy item: memo_21
11:16:28  Renderer::Processor      renderingEndItem item: memo_20
11:16:28  Renderer::Processor      renderingEndItem item: memo_21
11:16:28  Renderer::Processor      _done
11:16:28  Renderer                 slotProcessorDone
11:16:28  Renderer                 done
11:16:28  ReportCore               Renderer done for report: report without errors
11:16:28  Renderer::Processor      RendererProcessor DTOR
11:16:28  Renderer::Thread         Rendering Thread successfuly destroyed
« Последнее редактирование: Октябрь 09, 2014, 10:48 от navrocky » Записан

Гугль в помощь
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #23 : Октябрь 09, 2014, 11:07 »

Получилось получить значение поля, надо было запрашивать [root."field1"]  Улыбающийся
Записан

Гугль в помощь
AlFoX
Гость
« Ответ #24 : Октябрь 09, 2014, 11:25 »

Логично было бы просто добавить dataset с моделью из кода, или из кода найти dataset по имени и назначить ему модель.
Ну так никто не мешает так сделать  Подмигивающий
В ReportCore есть методы для создания датасета по его имени. Потом можно делать с ним все что угодно и добавить в класс отчета ReportInterface::addDataset

Цитировать
Ну и нужен работоспособный пример в документации, так как это один из ключевых моментов.
Все будет, но не сразу. У меня есть еще основная работа, кроме этого проекта. Но готов принять ваш пример   Строит глазки

« Последнее редактирование: Октябрь 09, 2014, 11:27 от AlFoX » Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #25 : Октябрь 09, 2014, 11:34 »

Пример уже почти готов, сейчас на нём как раз играюсь.

Сейчас столкнулся с очередной проблемой.

Предположим у меня есть корневая модель с одной строкой, в ней хранятся значения для не табличной части отчета. Когда я в detail указываю эту модель, то поля на этом detail отрабатывают как и задумано.

Но как мне заставить работать поля в header и footer? Там нет привязки к модели и получение данных не работает.

Я уже попробовал сменить им порядок создания, чтобы они отрабатывали после detail с назначенным dataset, но это не помогло.

Может быть я вообще не так делаю привязку данных для не табличной части?

Ну и вопрос по переименованию полей в настройках dataset, как это сделать? А то не очень наглядно получается, когда в отчете используется field1, field2, field3...
Записан

Гугль в помощь
AlFoX
Гость
« Ответ #26 : Октябрь 09, 2014, 11:45 »

В футере, по идее должно работать, так как датасет уже инициализирован. для хидера придется датасет вручную инициализировать в скрипте: root.populate();
Цитировать
Ну и вопрос по переименованию полей в настройках dataset, как это сделать? А то не очень наглядно получается, когда в отчете используется field1, field2, field3...
переадресую это автору датасета Волкову Ивану.
« Последнее редактирование: Октябрь 09, 2014, 11:47 от AlFoX » Записан
Wulff007
Гость
« Ответ #27 : Октябрь 09, 2014, 12:20 »

Ну и вопрос по переименованию полей в настройках dataset, как это сделать? А то не очень наглядно получается, когда в отчете используется field1, field2, field3...

В QAbstractItemModel есть замечательный метод headerData(). Если через него передавать нужные имена столбцов, то можно отлично реализовать такую возможность. Первый момент здесь, через какую роль получать имена, для меня предпочтительнее через Qt::DisplayRole. И второй, в редакторе реализовать переименование колонок, каким способом(только для тестовой таблицы в редакторе, в runtime будет брать из headerData)? В принципе, на данный момент подойдет редактирование в LineEdit через запятую требуемых наименований колонок. Может быть есть какие мысли по этому поводу?
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #28 : Октябрь 09, 2014, 12:45 »

В общем, не работает root.populate(), не работа использование поля модели из других бандов, не связанных с этой моделью, даже если они исполняются после того банда, который связан.

Пока не знаю что делать.

Вот пример: https://github.com/navrocky/CuteReportModelExample

PS. root.populate() зову в скрипте, ошибок исполнения вроде нет.

Так-же видел в доке можно использовать print() для распечатывания значений, но я не нашел куда этот вывод попадает в редакторе отчетов. В логе, тот что по зеленой стрелочке открывается снизу, пусто.
Записан

Гугль в помощь
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #29 : Октябрь 09, 2014, 12:50 »

В QAbstractItemModel есть замечательный метод headerData(). Если через него передавать нужные имена столбцов, то можно отлично реализовать такую возможность. Первый момент здесь, через какую роль получать имена, для меня предпочтительнее через Qt::DisplayRole.

У модели есть метод setHorizontalHeaderLabels, он назначает Qt::DisplayRole, так что, да, её и надо использовать.

только для тестовой таблицы в редакторе, в runtime будет брать из headerData?

Да.

В принципе, на данный момент подойдет редактирование в LineEdit через запятую требуемых наименований колонок. Может быть есть какие мысли по этому поводу?

В качестве заткнуть дырку такое решение подойдет.

А логичнее при добавлении спрашивать/предлагать имя колонки с помощью QInputDialog. И добавить кнопку для переименования выделенной колонки, также в контекстное меню по колонке тоже можно положить это действие.
Записан

Гугль в помощь
Страниц: 1 [2] 3 4 ... 6   Вверх
  Печать  
 
Перейти в:  


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