Доброго времени суток.
В посте «Harbour — новое лицо xBase family» Александр Кресин рассказал, что такое Harbour.
Проект QtContribs — это расширение Harbour для использования Qt.
Т.е. все, кто знаком с dbase-языками программирования (foxpro, clipper и др.) смогут, используя QtContribs, писать кроссплатформенные приложения с хорошим графическим интерфейсом (конечно изучив «философию» Qt), да и вообще использовать всю мощь Qt.
Учитывая изложенное в посте «Разработка Qt-приложения с доступом к MySQL под Android», возможности для разработки под Android + mySQL также существуют.
Но главный разработчик библиотеки QtContribs (Pritpal Bedi) консервативен ине развивает ту часть, которая связана с QtSql.
Я посчитал это неправильным и немного поучаствовал в развитии этого направления.
(Исправлено) Сегодня(25.07.2014) главный разработчик QtContribs Pritpal Bedi, посмотрев мою работу, выложил новые биндинги для QtSql и сказал что будет развивать это направление. форум QtContribs Это здорово.
Далее покажу пример использования QSqlTableModel и QTableView.
Итак, в поставке Qt есть много примеров и среди них приложение sqlbrowser. Я взял из него файл browserwidget.ui — это окошко приложения, сделанное в qt-designer, и немного его исправил.
Подготовил проект.
Для связи объектов Harbour и Qt сделаны файлы с раширением qth — из них генерятся cpp-файлы (биндиги или проще связки).
Два файла qth я вложил в архив проекта.
Весь проект для Linux лежит здесь: форум QtContribs.
Сделал основную программу на Harbour:
Получилось вот что:
Вот и все, казалось бы.
Но чтобы это заработало, нужен драйвер qtmysql — его компиляция — это системный вопрос, там же на форуме я кратко описал, как это сделать.
Тем, кто заинтересовался, предлагаю посмотреть туториал разработки простых QtContribs-приложений: HBQT-Tutorial.
Приглашаю всех обладающих свободным временем и желающих разбираться в Си, Си++ и других языках к развитию проекта. В ближайших планах сообщества интеграция отладчика в Harbour IDE(сокращенно HbIDE).
Если возникнут вопросы (нужна информация на русском языке) как собрать и использовать Harbour и QtContribs, что такое HbIDE и как ее использовать, и другие, то я готов продолжить…
Скачать исходники и исполняемые файлы можно в этом репозотории sourceforge.net
В посте «Harbour — новое лицо xBase family» Александр Кресин рассказал, что такое Harbour.
Проект QtContribs — это расширение Harbour для использования Qt.
Т.е. все, кто знаком с dbase-языками программирования (foxpro, clipper и др.) смогут, используя QtContribs, писать кроссплатформенные приложения с хорошим графическим интерфейсом (конечно изучив «философию» Qt), да и вообще использовать всю мощь Qt.
Учитывая изложенное в посте «Разработка Qt-приложения с доступом к MySQL под Android», возможности для разработки под Android + mySQL также существуют.
Но главный разработчик библиотеки QtContribs (Pritpal Bedi) консервативен и
Я посчитал это неправильным и немного поучаствовал в развитии этого направления.
(Исправлено) Сегодня(25.07.2014) главный разработчик QtContribs Pritpal Bedi, посмотрев мою работу, выложил новые биндинги для QtSql и сказал что будет развивать это направление. форум QtContribs Это здорово.
Далее покажу пример использования QSqlTableModel и QTableView.
Итак, в поставке Qt есть много примеров и среди них приложение sqlbrowser. Я взял из него файл browserwidget.ui — это окошко приложения, сделанное в qt-designer, и немного его исправил.
Подготовил проект.
Для связи объектов Harbour и Qt сделаны файлы с раширением qth — из них генерятся cpp-файлы (биндиги или проще связки).
Два файла qth я вложил в архив проекта.
Весь проект для Linux лежит здесь: форум QtContribs.
Сделал основную программу на Harbour:
#include "hbqtgui.ch"
#include "hbqtsql.ch"
STATIC s_db, s_oBrowser
PROC main()
LOCAL oMainWindow, oELoop, lExit := .F.//, oApp
LOCAL oStrModel, oStrList//, db
CLS
hb_cdpSelect( "UTF8EX" )//Основная кодовая страница приложения
oMainWindow := QMainWindow()
oMainWindow:setAttribute( Qt_WA_DeleteOnClose, .F. )
oMainWindow:setWindowTitle("Qt SQL Browser")
s_oBrowser = hbqtui_browserwidget(oMainWindow)
oMainWindow:setCentralWidget(s_oBrowser:oWidget)
oMainWindow:connect( QEvent_Close , {|| lExit := .T. } )
s_db = QSqlDatabase():addDatabase("QMYSQL")
s_db:setHostName("localhost")
s_db:setDatabaseName("test")
IF .NOT. s_db:open()
?"Not Connected!"
RETURN
ENDIF
oStrList :=s_db:tables()
oStrModel := QStringListModel( oStrList, s_oBrowser:listView )
s_oBrowser:listView:setModel( oStrModel )
s_oBrowser:listView:connect( "clicked(QModelIndex)", { |d| showTable(d) } )
oMainWindow:show()
oELoop := QEventLoop( oMainWindow )
DO WHILE .t.
oELoop:processEvents()
IF lExit
EXIT
ENDIF
ENDDO
oELoop:exit( 0 )
RETURN
PROCEDURE showTable(d)
LOCAL cTName
LOCAL model
cTName := s_oBrowser:listView:model():data(d, 0):ToString()
cTName := s_db:driver:escapeIdentifier(cTName, 1/*QSqlDriver():IdentifierType:TableName*/)
model := QSqlTableModel(s_oBrowser:table, s_db)
model:setTable(cTName)
if (model:lastError():type() != 0)
?model:lastError():text()
endif
model:select()
if (model:lastError():type() != 0)
??model:lastError():text()
endif
s_oBrowser:table:setModel(model)
// s_oBrowser:table:setEditTriggers(QAbstractItemView_DoubleClicked+QAbstractItemView_EditKeyPressed)
RETURN
Получилось вот что:
Вот и все, казалось бы.
Но чтобы это заработало, нужен драйвер qtmysql — его компиляция — это системный вопрос, там же на форуме я кратко описал, как это сделать.
Тем, кто заинтересовался, предлагаю посмотреть туториал разработки простых QtContribs-приложений: HBQT-Tutorial.
Приглашаю всех обладающих свободным временем и желающих разбираться в Си, Си++ и других языках к развитию проекта. В ближайших планах сообщества интеграция отладчика в Harbour IDE(сокращенно HbIDE).
Если возникнут вопросы (нужна информация на русском языке) как собрать и использовать Harbour и QtContribs, что такое HbIDE и как ее использовать, и другие, то я готов продолжить…
Скачать исходники и исполняемые файлы можно в этом репозотории sourceforge.net