記事の目的
- wxWidgetsを使用したソフトウェア開発の経験について話してください。
- ドキュメントテンプレートの準備と印刷の分野で既製のソリューションを共有します。
- 機能に関する推奨事項と建設的な批判を入手します。
しかし、最初の話
そのため、商用オペレーティングシステム用のソフトウェアソリューションを使用して、商業用オイルアカウンティング用の独自の機器を備えた工業企業の1つで働くと、クロスプラットフォームソフトウェア開発について考えることが多くなりました。
その後、さまざまなライブラリを飲みました。 Gtk +とQTの両方がこのリストに載っていました。 しかし、本当に、wxWidgetsは私を魅了しました。
同時に、自動車の売買取引、保険、およびメンテナンスのサポートに携わる会社のためのプライベートデータベースプロジェクトがありました。 週末にやりました。 このプロジェクトの初期段階で、QT、Gtk +、wxWidgetsを試しましたが、最終的には他のツールを使用して完全に再実装しました。
忍耐は優れた品質ですが、人生は短すぎて長く耐えられません-アブl-ファラジ。
当時、これらのライブラリを使用しない理由は、技術的な実装の複雑さではなく、時間制限でした。 ビジネスは待つのが好きではありません。
一般に、テストされたライブラリごとにこのプロジェクトを開発するとき、特定のレベルの完全性に達しました。 表は、結果を昇順で示しています。
楽器 | 何が行われた | 顧客からのフィードバック | 拒否の理由 |
---|---|---|---|
QT | 一対のフォーム+ロジックでバインドします。 | 顧客には提示されません。 | 解決策を探すのに多くの時間を費やしました。 |
Gtk + | GUI全体。 | WinXPの場合、GUIはネイティブで見慣れたもののようには見えませんでした。 | IDEに統合されたGUIビルダーがありませんでした。
通常の種類のGUIではありません。 かさばる実装、長い関数名。 解決策を探すのに多くの時間を費やしました。 |
wxWidgets | GUI + DB全体。 | 要素を正確に配置したドキュメントの印刷はありませんでした。 | 印刷用のドキュメントテンプレートの既製のジェネレータはありませんでした。 |
他にもありましたが、その結果はQTの結果よりも控えめです。
公平に言うと、これらのライブラリをすべて使用したのはこれが初めてだったと言わなければなりません。 wxWidgetsで印刷するためのドキュメントテンプレートジェネレーターでない場合...
今何
その結果、ごく最近、最小限の実行可能なクロスプラットフォームテンプレートジェネレーターと、当時のレベルでwxWidgetsを使用して印刷するためのクライアントライブラリを作成しました。
試してみたい人はc-help.tkにアクセスしてください 。 兄が親切にサイトを提供してくれたので、できるだけ簡素化されたフリルのないサイトを発行するように頼みました。 成功したと思います。
現在私たちが持っているもの:
- Windows、Linux用のテンプレートジェネレーター。
- 例付きのWindows、Linux用のクライアントライブラリ。
- Windows、Linuxでこのライブラリを使用するクライアントの例。
- プロモーション用ウェブサイト。
どのように見えますか?
テンプレートジェネレーター:

最も単純なクライアント(左側のコンソールアプリケーション):

どのように機能しますか?
テンプレートジェネレーター:
1.技術図面のように、グラフィック要素が正確に配置されたテンプレートが作成されます。
2.変数名の列挙が作成されます。
3.テキストフィールドは、テンプレートの適切な場所に配置されます。
4.テキストフィールドに、変数名とともに静的テキストを入力できます。 変数は、特殊文字「$ {」と「} $」の間に指定されます(これまでは手動でのみ)。
5.テンプレートがファイルに保存されます。 ファイルには多くのパターンを含めることができます。 画像ファイルはテンプレートに添付されていません。 クライアントはBMP画像のみを印刷します。
クライアント+クライアントライブラリ:
6.テンプレートファイルをロードします。
7.テンプレートを選択します(これまではインデックスを介してのみ)。
8.データを変数に設定します(これまではインデックスを介してのみ)。
9.印刷する問題。 プリンタの余白設定が異なるため、印刷が行われる場合があります。
おわりに
使用されたもの:
- 開発環境コード::ブロック13.12。
- wxWidgets 3.0.2。
- プロジェクト用のWindows用のMinGW 3.4.5コンパイラとwxWidgetsのコンパイル(Linux用のgcc)。
- Windows 8
- Linux Mint 17.2。
- クライアントライブラリの説明を生成するためのDoxygen。
- ギット。
- ユニットテストのTUT。
- デバッグ用のGDB 7.6.1。
wxWidgetsで私たちを満足させたもの:
- Code :: BlocksのwxSmithプラグインは、GUIをグラフィカルエディターモードで構築するのに役立ち、コードの生成にかかる時間を大幅に短縮します。
- これまでのところ、Linuxでコンパイルするために1行のコードを書き直す必要はありませんでした。 これが続くことを願っています。
- 完全にアクセス可能な詳細なドキュメント。
- wxWidgetsライセンスを使用すると、さまざまなライセンスの下で、サポートされているすべてのプラットフォームのライブラリに基づいてアプリケーションを作成できます。
- アプリケーションの国際化(GNU gettext)。
- すぐに使えるPropertyGrid。
これはwxWidgetsにあまり満足していません:
- たとえば、GDBはwxString文字列クラスの値を表示しませんでした。 同時に、フォーラムでアドバイスされているように、デバッガの構成を変更しても役に立たなかった。 悲しい 以前のバージョンのCode :: Blocksでは、このデータは修正なしで表示されていたようです。 ログファイルに文字列変数を描画し、それに書き込まれた値を確認する必要がありました。 ボーナスとして、ユーザーアクションをログに記録する機能(リリースでは無効)を受け取りましたが、これも便利です。
- Code :: Blocksで作成されたGUIアプリケーションを使用すると、マクロ内でwxWidgetsライブラリの初期化が暗黙的かつ自動的に行われます。 マニュアルの初期化メソッドの説明はドキュメントに記載されており、wxInitialize()関数の単純な呼び出しですが、説明は非常に不十分です。
Code :: Blocksの多くの側面を自動化しないと、wxWidgetsを使用することはより困難になると思います。
今のところすべてです。