QtContribs =港+ QT

良い一日。



投稿「Harbor-xBase familyの新しい顔」で、 Alexander KresinはHarbourとは何かを語った。

QtContribsプロジェクトは、Qtを使用するためのハーバー拡張です。



つまり dbaseプログラミング言語(foxpro、clipperなど)に精通しているすべての人は、QtContribsを使用して、優れたグラフィカルインターフェイス(もちろん、Qtの「哲学」を研究した)を備えたクロスプラットフォームアプリケーションを作成し、実際にQtのフルパワーを使用できます。



「MySQL for AndroidにアクセスできるQtアプリケーションの開発」を考慮すると、Android + mySQLの開発の機会も存在します。



しかし、QtContribsライブラリ(Pritpal Bedi)のメイン開発者は保守的であり、QtSqlに関連する部分を開発していません。

私はこれを間違っていると考え、この方向の開発に少し参加しました。



(修正済み)今日(2014年7月25日)QtContribs Pritpal Bediの主な開発者は、私の仕事を見て、QtSqlの新しいバインダーを投稿し、この分野を開発すると言いました。 QtContribsフォーラムこれは素晴らしいことです。



次に、QSqlTableModelとQTableViewの使用例を示します。



そのため、Qtディストリビューションには多くの例があり、中でもsqlbrowserアプリケーションがあります。 これからbrowserwidget.uiファイルを取り出しました。これはqt-designerで作成されたアプリケーションウィンドウで、少し修正されています。



プロジェクトを準備しました。



HarbourオブジェクトとQtオブジェクトを接続するために、qth拡張子を持つファイルが作成されました-それらからcppファイルが生成されます(バインダーまたはより単純なバンドル)。

プロジェクトアーカイブに2番目のqthファイルを配置します。



Linuxプロジェクト全体は、QtContribsフォーラムにあります。



ハーバーのメインプログラムを作成しました。



#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をご覧になることをお勧めします。



自由時間を持ち、C、C ++、およびその他の言語を理解したいすべての人をプロジェクトの開発に招待しています。 近い将来、ハーバードIDE(略してHbIDE)へのコミュニティデバッガーの統合。



HarborおよびQtContribsの収集方法と使用方法、HbIDEとは何か、その他の使用方法などについて質問がある場合(ロシア語で情報が必要)、続行する準備ができています...



このリポジトリのソースおよび実行可能ファイルをダウンロードできますsourceforge.net



All Articles