![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
JohnZ |
![]()
Сообщение
#1
|
Участник ![]() ![]() Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Здравия Всем !
Понадобился мне в проект QDataTable, из QT3, а тянуть ВЕСЬ модуль Qt3Support4.dll не хочется. QTable из 4-ки более похож на M$ Exel, и для справочников не совсем то что мне нужно ... Может кто уже занимался этим вопросом, поделитесь плз. Буду оч-чень благодарен ! |
|
|
lanz |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Нарисуйте как должно выглядеть то что вам нужно, прикинем как настроить QTableView чтобы выглядел так же.
|
|
|
JohnZ |
![]()
Сообщение
#3
|
Участник ![]() ![]() Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Нарисуйте как должно выглядеть то что вам нужно, прикинем как настроить QTableView чтобы выглядел так же. Вид в прицепе, но видимо тут нужны некоторые пояснения с моей стороны, почему нужно именно так, а не иначе ... Работаю над проектом типа "Ананас", если кто в курсе что это за проект. В 3-й версии ребята потрудились на славу, молодцы, но вот при переходе на 4-ю версию, вынуждены были потянуть Qt3Support4.dll, т.к. слишком много в проекте "завязано" на Qt3 ... Не знаю почему в точности, (отладчик "сваливается" в ассемблерный код dll) но IMHO по этой причине под виндой он глючный до безобразия, и собирается с "бубном", т.к. недоработан import/export функций в т.ч. В линухе это сделано "автоматом", а в винде нет, как я вычитал на этом форуме ... Кроме того видимо сказывается разность версий Qt, - Ананас4 собирался с 4.1.5, а я собираю с 4.5.3. Это видимо тоже одна из причин "сваливания" встроенного Дизайнера диалогов Qt4. Его тоже придётся переделывать ... ![]() собирать с 4.6.1 - вылетает почти сразу, после запуска Дизайнера диалогов ... Прошу прощения за длинную тираду, а теперь по-делу ... QDataTable должен будет показывать справочники (и документы видимо тоже), быть плагином в Дизайнере диалогов и предоставлять интерфейсы для QSA (Qt-Script убрал из проекта и вернул QSA-1.2.3, т.к. IMHO он "шустрее". Мне удалось его собрать под 4.5.3. В оригинале есть 2 ошибки, если кому надо ...), а QTableView я планирую на показ табличных отчётов. Должны-же быть какие-то отличия ... ![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Визуально я не вижу отличий от QTableView (Qt4).
Можешь использовать QTableWidget (Qt4), монолитный класс по аналогии с QDataTable (Qt3) |
|
|
lanz |
![]()
Сообщение
#5
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Если нужно все связать, можно сделать свой виджет с QTableView и встроенной QSqlTableModel например. Оформить его как плагин, сделать QSA интерфейс.
Кстати, насчет того что QSA шустрее, есть какие нибудь бенчмарки? |
|
|
JohnZ |
![]()
Сообщение
#6
|
Участник ![]() ![]() Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Юрий, БлагоДарю. Попробую, но пока не очень получается настроить, т.к. некоторые св-ва в Дизайнере
этого элемента для меня пока не совсем понятны ... И ещё, пока есть одна проблема, - для QTableWidget метод setmodel() из QTableView закрыт, а QTableView не настраивается как QTableWidget ... Если нужно все связать, можно сделать свой виджет с QTableView и встроенной QSqlTableModel например. Оформить его как плагин, сделать QSA интерфейс. Именно так мне и нужно. Скорее всего сделаю шаблоны форм *.ui (Справочник, Документ, ...), с настроенным заранее QTableWidget, как подсказал Юрий, и положу их в ресурсы приложения. Ну и + (универсальный) класс, это всё хозяйство обслуживающий ... Вернее 2 класа, для Дизайнера Арр и Исполнителя ... Кстати, насчет того что QSA шустрее, есть какие нибудь бенчмарки? Дык заглянув в исходники QSA и Qt Script, хотя-бы поверхностно можно оценить выполняемый объём работы одним и вторым интерТреПатором по разбору и выполнению кода жабьего скрипта. На мощной технике это видимо будет мало заметно, а вот на "слабых" машинках, и при десятке-втором тыс. записей в БД, это уже будет заметно, IMHO. Я не имею в виду выборку/фильтрацию SQL-ем, а обработку записей именно скриптом, как в отчётах, например. Ведь заранее не известно, для каких целей будет этот скрипт применён ... Справедливости ради, могу добавить, что спрашивал я у Макса Шлее о "возвращении" QSA, дык он рекомендовал не делать этого. Но я пока остался при своём мнении. Попробую, буду знать точно, но до этого пока ещё далеко ... |
|
|
lanz |
![]()
Сообщение
#7
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Попробую, но пока не очень получается настроить, т.к. некоторые св-ва в Дизайнере этого элемента для меня пока не совсем понятны ... Спрашивайте какие, на той картинке что вы привели выглядит как QTableView по умолчанию. Цитата И ещё, пока есть одна проблема, - для QTableWidget метод setmodel() из QTableView закрыт, а QTableView не настраивается как QTableWidget ... Потому что в QTableWidget своя модель. Что вы имеете в виду, когда говорите не настраивается? Какие параметры не настраиваются? |
|
|
JohnZ |
![]()
Сообщение
#8
|
Участник ![]() ![]() Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Имелось в виду то, что в QT Дизайнере задать заранее колонки для QTableView нельзя (нет там такого диалога его настройки
как элемента диалога, т.е. формы Справочник, Документ, ...), а у QTableWidget такой диалог есть. Вызывается двойным щелчком на элементе. Например, в справочнике 5 полей, показать нужно 3. Для QTableWidget в QT Дизайнере это настроить можно, а так-же добавить ему дин-е св-ва и задать им значения, а как для QTableView это сделать, я не нашёл. (QT 4.5.3) Я понимаю что QTableView заточен для модель\представления, но дело в том, что заранее не известно, сколько полей будет в таблице, и какие из них и в каком порядке будут в просмотре. Именно для этого и нужен родной QT Дизайнер. |
|
|
lanz |
![]()
Сообщение
#9
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Число полей, а так же их порядок и названия зависят от модели, у нее для этого нужно переопределить методы
columnCount, headerData и т.п. Почитайте вот это: http://qt-project.org/doc/qt-4.8/model-view-programming.html В свою очередь эти методы могут выдавать разные значения динамически. Т.е. вам не нужно несколько View для разных типов таблиц, а нужно несколько моделей(например). Или одна модель которая настраивается через дизайнер. Вот здесь описано как сделать модель со своими свойствами: http://qt-project.org/doc/qt-4.8/designer-...om-widgets.html |
|
|
JohnZ |
![]()
Сообщение
#10
|
Участник ![]() ![]() Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Число полей, а так же их порядок и названия зависят от модели, у нее для этого нужно переопределить методы columnCount, headerData и т.п. Почитайте вот это: http://qt-project.org/doc/qt-4.8/model-view-programming.html Я имел в виду динамический BIND полей, как в формах 1С или Ананасе. В свою очередь эти методы могут выдавать разные значения динамически. Т.е. вам не нужно несколько View для разных типов таблиц, а нужно несколько моделей(например). Или одна модель которая настраивается через дизайнер. Вот здесь описано как сделать модель со своими свойствами: http://qt-project.org/doc/qt-4.8/designer-...om-widgets.html Именно так, одна (универсальная) модель которая настраивается через дизайнер(ы) ! Виджеты дизайнера "родные", и мне пока нет необходимости создавать свои, нужно лишь к имеющимся добавить необходимые динамические свойства для BIND-а, например ID поля и его номер колонки в view. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 12.5.2025, 19:02 |