LINUX.ORG.RU

[Qt] что прочитать на тему создания интерфейса к таблицам БД?

 


0

0

Посоветуйте по теме какие-то из (необозримых) доков кути и/или посторонние туториалы.

Чтобы делать интерфейс к таблицам БД в виде

1. таблицы с текстовыми полями ввода (с выпадающей историей/иными предложениями), выпадающими списками, своими виджетами в ячейке

2. формы с тем же хозяйством, с возможностью рефрешить одни виджеты при изменении других виджетов

И еще вопрос: а есть возможность печатать (на бумагу) кутишные формы? При этом их надо показывать чуть по-другому — например, убирать пустые строки ввода (где сейчас стоит курсор), лишние иконки и т.п.

З.Ы. в ответах на тему кути иногда говорят «лучше спроси на ...», напомните этот сайт

★★★★★

Последнее исправление: www_linux_org_ru (всего исправлений: 2)

Начни отсюда: http://qt.nokia.com/doc/main-snapshot/model-view-introduction.html

А вообще при таких развернутых требованиях придется писаит свое представление для модели, где и можно будет реализовать [quote]с выпадающей историей/иными предложениями[/quote]

Рефрешить формы проще всего использую сигналы форм о изменении и дописать свой слот refresh()

З.Ы. Как бы парадоксально это не звучало, но сайт называется http://qt.nokia.com/

trex6 ★★★★★
()

>возможность печатать (на бумагу) кутишные формы? При этом их надо показывать чуть по-другому

Рисуй при помощи QPixmap::grabWidget нужные виджеты в QPixmap через QPainter, потом QPrinter::drawPixmap.

summatus
()

понял про комбинацию QSqlTableModel + QTableView, а вот есть ли QFormView, аналогичный QTableView? (чтобы каждую запись редактировать не в строке таблицы, а в форме)

З.Ы. гугль говорит что нет... а почему?

www_linux_org_ru ★★★★★
() автор топика
Ответ на: комментарий от zJes

ну-ну

вьюха в виде формы есть уже со времен акссесса 97 (или раньше) и благополучно скопирована ОО.о

вот только в кутях ее нет

www_linux_org_ru ★★★★★
() автор топика
Ответ на: комментарий от www_linux_org_ru

Так автоматически то компоненты с их лэйаутами из модели поднять невозможно по определению. Слишком кастомная задача.

theos ★★★
()
Ответ на: комментарий от theos

еще чего!

легкий путь (а-ля аксес и оо.о) — затолкать лейауты, шрифты, ... во вьюху

правильный путь: сделать субкласс модели и затолкать это *туда*

www_linux_org_ru ★★★★★
() автор топика
Ответ на: комментарий от www_linux_org_ru

однако, возможность переопределить атрибут модели (например, шрифт) во вьюхе надо иметь (хотя кстати шрифт это неудачный пример, скорее свойство «моноширинный или с разной шириной»)

дальше, еще аксес держал кое-что в модели — например, маску ввода, и умел строить модель запроса по моделям таблиц (в переводе на русский — создавать правильную маску ввода полю в запросе)

аксес 2000 ЕМНИП закинул в модель «отображать в виде такого-то поля по внешнему ключу»

www_linux_org_ru ★★★★★
() автор топика
Ответ на: комментарий от www_linux_org_ru

А как все это будет расположено на форме так что бы было удобно? Откуда эту информацию читать.

theos ★★★
()
Ответ на: комментарий от www_linux_org_ru

Решение проблемы с формой

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

По поводу готовых решений - OO.o и access действительно предоставляют более простые и быстрые, с точки зрения реализаци, средства разработки. Если других привязок к Qt нет, тогда есть смысл подумать о переводе проекта на одну из этих платформ. Главное быть уверенным, что в ходе разработки не упретесь в ограничения выбранной платформы.

trex6 ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

> чтобы каждую запись редактировать не в строке таблицы, а в форме

я такую задачу решил написанием класса на основе QTableView и QSqlTableModel, которому можно указать FormDialog для редактирования строки таблицы. В этот FormDialog передаётся QSqlRecord, и при accept() от него забирается изменённый QSqlRecord. Итого для кастомных формочек я рисую интерфейс и пишу два метода: один для раскидывания данных из QSqlRecord по формочке и другой для сбора данных.

unC0Rr ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

>чтобы каждую запись редактировать не в строке таблицы, а в форме

QDataWidgetMapper + форма вручную, по-моему подходит.

tzukko
()

насчет формы понятно

насчет виджетов в таблице: самый простой вариант — это ячейка с вычисляемым значением, как это сделать? (годится ответ в виде указания класса(-ов))

www_linux_org_ru ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.