LINUX.ORG.RU

Развитие QtSql направления

 , , , ,


0

1

Вот небольшое видео сделал с демонстрацией новых возможностей работы с таблицами данных на Qt 4.8.1. Открытый свободный проект.

Сам использую в двух коммерческих проектах. Планирую развивать и поддерживать.

Может кому интересно будет.

https://youtu.be/vUrVNU1h_rY


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

На мотив песенки из Буратино:
Pure пара-па-па-па-папам…
virtual пара-па-па-па-папам…
call пара-па-па-па-папам…

PURE VIRTUAL CALL!!!

По моим наблюдениям все (в том числе и я) кто имел дело с QtSql занимались написанием своих велосипедов. Это показатель всратости фреймворка. В нормальных языках есть нормальные ORM. Но не в c++. Вот и приходится колхозить. При этом дальше примитивного CRUD обычно не идёт.

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

Лучше тролей никто ничего в Qt не добавил.

Это не важно. Qt4 никем не поддерживается, а значит там не исправляют баги и уязвимости. В конце концов он просто перестанет работать в современном окружении.

Хотя судя по бандикам.ком, то дело происходит под виндой (я за бан). Вот только там qt4 и сможет работать ибо микрософт осилил стабильность в win api. А в линуксе обязательно поломают что-нибудь и исправления для qt4 не будет.

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

ORM , Object-Relational Mapping (избавиться от необходимости писать SQL-код для взаимодействия с СУБД) Похоже у нас речь именно об этом. На счёт фреймворка я тут помониторил , нашел только GTK на С, wxWidgets на С++ и как бы все… Какая альтернатива, самому фреймворк написать?

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

А что там, подсистема Sql в Qt сильно поменялась? Походу что было то и осталось, пара косметических исправлений и все.

Подсистема QtSQL может и ни капли не изменилась (сомневаюсь), но вот Qt серьёзно изменился. В Qt 4 нет поддержки HiDPI, а в Qt 5 и Qt 6 она есть. Чтобы твоё приложение, которое использует Qt 4 не смотрелось как дерьмо на современных 4K HiDPI мониторах, имеет смысл перейти на новую версию Qt. Про то что Qt 4 EOL и никто там не исправляет ничего уж молчу.

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

У меня так складывается исторически, что да - я под Виндой планирую подрабатывать на своем софте. Но есть и открытая часть софта, о которой здесь и идёт речь. Под линакс очень трудно зарабатывать как мне кажется.

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

Для нормального и удобного ORM нужна рефлексия, которой пока что нет в c++ и не ясно когда будет. Так что можно не начинать. Примеры существующих ORM: entity framework core в c# и hibernate в java.

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

Спасибо за наводки, конечно интересно, поизучаем, но откровенно говоря посматривал в сторону и java, но когда у тебя на С++ все работает и отладка по исходникам идет, то вряд ли на java можно заставить себя перейти.Тут дело конечно вкуса

kkmspb
() автор топика
Ответ на: комментарий от no-dashi-v2

это считается абсолютно нормальным.

Нет. Это классическая стрельба по ногам в стиле c++.

Пример:

Класс B наследует класс A.

В B переопределил виртуальный метод print из класса A. Деструктор A вызывает print. Когда работает деструктор A, то B уже разрушен.

Если в A метод print был определён как чисто виртуальный, то приложение упадёт с сообщением pure virtual call. Демка https://godbolt.org/z/rqxs69Ejn

Если в A есть реализация print, то сработает она, а не переопределённая версия из B, что может быть сюрпризом для программиста и реальное поведение программы будет отличаться от задуманного.

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

Случай с pure virtual неинтересн - а вот поведение с вызовом не переопределенного метода это конечно подстава.

no-dashi-v2 ★★
()
Последнее исправление: no-dashi-v2 (всего исправлений: 1)
Ответ на: комментарий от ox55ff

Спасибо, согласен submit из деструктора лучше совсем убрать. Конечно там ещё много чего можно найти, я уже раз 10 кардинально переделывал логику, думаю ещё огребу геммороя, когда на живых клиентах начну «тестировать». А какие нормальные языки -ассемблер?

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

Если в A метод print был определён как чисто виртуальный, то приложение упадёт с сообщением pure virtual call

Похоже на правду, надо будет попробовать сэмулировать такое.

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

Для нормального и удобного ORM нужна рефлексия.

Посмотрел я про рефлексию вобщем. Ну в Qt это метаоб’ектная система получается. В С++ рефлексии нет. Но и проблем как мне кажется тоже нет. Используя новое наследование по С++ получаем новый дополнительный функционал - зачем нам рефлексия?

kkmspb
() автор топика
Последнее исправление: kkmspb (всего исправлений: 1)
Ответ на: комментарий от no-dashi-v2

Случай с pure virtual неинтересн - а вот поведение с вызовом не переопределенного метода это конечно подстава

Да согласен, чего-то я погорячился. Конечно так нельзя. Убрал из кода.

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

Это не важно. Qt4 никем не поддерживается, а значит там не исправляют баги и уязвимости. В конце концов он просто перестанет работать в современном окружении.

Кстати да - для использования Tlsv1.2 пришлось одну строку кода добавить в исходниках. Но чтобы узнать где это надо сделать пришлось покопаться, но зато теперь лучше узнал Qt.

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

Вот только там qt4 и сможет работать ибо микрософт осилил стабильность в win api. А в линуксе обязательно поломают что-нибудь и исправления для qt4 не будет.

Стало интересно - а что в линаксе обычно могут поломать? И если например статически программу собирать, то вроде пофигу на все лишь бы платформа не менялась?

kkmspb
() автор топика
Последнее исправление: kkmspb (всего исправлений: 2)
Ответ на: комментарий от ox55ff

Иксы в прямом эфире ломают. Ввод могут сломать

Я так понимаю это в каком-то компиляторе какой-то конкретной версии чего-то нехорошее делают? Вот я например еще только msvc-2010 юзаю для x86 only. И не чувствую проблем у пользователей своих программ.

kkmspb
() автор топика
Последнее исправление: kkmspb (всего исправлений: 1)
Ответ на: комментарий от mrjaggers

LINQ to SQL provides a runtime infrastructure for managing relational data as objects without losing the ability to query.

Я на самом деле не очень-то поклонник Майкрософт, но жизнь заставляет. Про MS LINQ SQL не хочу даже смотреть эту поделку. Зачем?… Есть чистый С++ и набор библиотек Qt например, и жизнь стабилизируется на многие годы.

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

Сегодня пятниница, я на даче с bino tinto roja и хочу спросить у всех- как вы думаете : реально создать свой Фреймворк типа Qt , то есть реализовать обработчик событий ОС, отрисовку Гуя и далее по желанию и опубликовать это например под лицензией аппаче типа делай что хочешь : закрывай код , продавай , развивай? И пойду-ка я озезо заплыву…

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