So-net無料ブログ作成
検索選択

Widgetのサイズ調整 [NetWalker]

さて、さっそくメインウィンドウ(と思われる場所)に左にある「Widget」をドラッグして、貼ってみました。オブジェクトのペインでは「centralWidget」と言うオブジェクトの配下に新規のウィジェットとして配置されましたね。で、見ての通り、中途半端な大きさです・・・。

1002_qt_qwidget.png
中途半端・・・


そうでした、QWidgetを単に配置しただけでは、大きさが変わってくれないんですよね。Zaurusの時は試行錯誤をしてレイアウトを先に配置した後にその中にウィジェットを置けばいいようなことがわかりましたが、ドキュメントはないんでしょうか・・?

リファレンスのページを眺めていたら、メインウィンドウについてのドキュメント がありますね・・。眺めているとQDockWidgetと言うのが気になりましたが、今は関係ないので置いておきましょう。QToolBarに用途が似ているようです。

上記は、今はあんまり関係無さそうだったので、続いてLayout Classesを読んでみます。・・・・。詳しい記述がありませんが、あんまり変わって無さそうなので、とりあえず「VerticalLayout」と言うコンポーネントをメインウィンドウにドラッグします。そして、元から入れてあったWidgetをそのレイアウトの中にドラッグ。これでwidgetがレイアウトの配下に入った様です。

1002_qt_qvboxlayout.png
サイズが変わらん・・・


・・が、Widgetのサイズがそのマンマですね。レイアウトのサイズも小さいままになってます・・。MainWindowのCentralWidgetの領域のサイズいっぱいにしたいんですが、どうすればいいんでしょうか??右側のverticalLayoutのオブジェクトを右クリックして、「AdjustSize」と言うのを試してみたところ、さらにちっちゃくなってしまいました・・・・。これ、CentralWidgetのサイズ自体が小さいような気がしますね・・・。

1002_qt_qvboxlayout_adjust.png
さらに小さく・・・


良くわからないので、QMainWindowクラスの詳細を読んでみます。が、求める情報はありませんね・・。適当にオブジェクトウィンドウ内の「MainWindowClass」を右クリックし、先ほどと同様に「AdjustSize」を実行したところ、Widgetがウィンドウ全体に広がりました!・・・・なんで??

1002_qt_qmainwindow_adjust.png
成功・・・



つづく。


【参考】
The Qt 4 Main Window Classes - Qt 4.5.3
QMainWindow Class Reference : Detailed Description
Layout Calsses - Qt4.5.3

Qtの描画の仕組み [NetWalker]

例によって、ペンの捕捉をしたいと思います。Qtに関しては、以前、Zaurusで利用してたので、なんとなく理解はできていると思ってます。ただ、ZaurusではRuby/Qteと言って、C++ではなく、Ruby経由でのアクセスでした。そして、そのときのQtのバージョンが確か、1.5あたりだったと思うので、今の4.5とは結構違いがあると思われます。一応、現状のものも確認していかなければならないでしょう・・。

Qtのいいところは、Qtのリファレンスのページが充実しているところです。ここで基本的なトピックは一通り追うことが可能です。まずは、ペンの動きをトレースした結果を表示する必要があるので、その結果表示のために描画関連の仕組みからおさらいしときます。

Qtの描画は、プログラマから見える範囲では、QPainterクラスとQPaintDeviceクラスを用いて実現するとのこと。QPaintDeviceクラスのデバイスにQPainterクラスを用いて描画する感じですね。これは昔と同じです。また、新たにOpenGL関連のAPIが追加されているようですね。NetWalkerでは、OpenGLはサポートされていないと思ってたんですが、どうやらOpenGLをサポートするチップは載っている様です。でも、使用するにはカーネルの再構築が必要??よくわからないので、とりあえず、ほっときます。

細かいことが色々書かれていて、後で見たほうがよさげな内容として、QPainterPathQPainterPathStrokerThe Coordinate System(これは必須かと思われる)、アンチエイリアシンググラデュエーション、動画、SVGなどが入っていますが、要はQPainterを用いて、QPaintDeviceに書き込むのが基本の様です。ここは昔と変わってないようですね。また、描画対象(QPaintDeviceを継承しているクラス)のオブジェクトは以前よりはいくつか増えている様ですが、基本は以前と変わらずQWidtetQImageQPixmapで問題ないようです。まずは、QWidgetを対象に考えます。

*

さて、とりあえず、線でも引いてみましょうか。まずは、ウィンドウのベースにQWidgetを貼り付けたいと思います。手探りでやりますが、プロジェクトの内容が書かれたペインにある「mainwindo.ui」をダブルクリックするとこんなんになってしまいました・・。

1002_qt_ui_designer.png
窮屈・・・


画面が狭いんですかねぇ・・。右側のクラスのプロファイルの画面はポップアップで出たほうが便利な気がしますね。後、プロジェクトのファイル一覧のところも小さくていいですか・・。か、上にどけといて欲しいかも。

クラスのプロファイルを消そうと右上の「×」をクリックしたら、全部消えちゃいました・・。まあ、何となく想像はしてましたが・・。

1002_qt_close_ui_designer.png
一蓮托生・・・


ちなみに、上の画像はプロジェクトのファイル一覧はちょっとちっちゃ目にしています。仕方がないので、もう一度、「mainwindow.ui」をクリックします。・・・オプティカルポイントが利かなくなったな。と思ったら、スクロールモードの切り替わってました・・。フルスクリーンにしてるとそこがわかりにくいですね・・。スクロールモードは使わないので、オフした方がいいかもしれません・・。

と、話がそれましたが、あちこちを動かして、こんな感じが限界でしょうか・・。

1002_qt_ui_designer_last.png
まだ、窮屈・・


まあ、ポータブルなデバイスでは、いたし方ありませんか・・。

さて、作業しよう!と思いましたが、長くなりましたので、つづく。


【参考】
The Paint System - Qt 4.5.3
The Coordinate System - Qt 4.5.3



Qtのプロジェクトを作る [NetWalker]

前回インストールしたQtの開発環境ですが、インストールされた各ツールが何者なのかが良くわからないので、一応調べておきました。

QDevelopgccやgdbを利用するQt4の開発環境だとのこと。Qt Creatorはgccを使わないのか??
Qt 4アシスタントQtの開発環境のドキュメントの様です。
Qt 4デザイナ画面のデザインツールですね。
Qt 4リンギスト翻訳支援ツールだそうです。GUIの翻訳作業を支援するとのこと。
Qt Creator純正の開発環境ですね。


インストールした時は「QDevelop」はあまり意識していなかったんですが、これも開発環境ですね。Qt Creatorが純正なのに対して、QDevelopはユーザが作ったもののようです。立ち上げると下記の様な感じになりました。メニューが日本語化されていますね・・。フルスクリーン表示はできない様です。

1002_qt_qdevelop.png
どうしようかな・・


検索しても、あまり日本では使われていなさげなので、ドキュメント等が心配です。最初は Qt Creator にしときましょう。でも、QDevelopの方はメニューが日本語化されてますけどねぇ・・。

*

さて、Qt Creatorです。とりあえず、何も見ないで試してみます。「File」→「New」で次のダイアログが出てきました。

1002_qt_creator_newprj.png
色々あります


「Qt4 Console Application」ってなんでしょうね・・? ウィンドウを使わずに他のQtのライブラリを使うものでしょうか? ま、気にせずに「Qt4 Gui Application」を選択します。

プロジェクトの名前と保存場所を設定するダイアログが出てきました。

1002_qt_creator_prjname.png
名前とプロジェクトの場所の設定


ま、適当に設定して「Next」。次は使うモジュールの設定となってます。

1002_qt_creator_prjlib.png
最初から分かっていれば、便利かも


最初から使うのが分かっていれば、これは便利ですね。自動かどうかはともかく、使うモジュールは後からでも追加できると思うので、とりあえずは何もチェック入れずに「Next」。次はクラスについての設定です。

1002_qt_creator_setclass.png
アプリケーションのクラス


ここで、Qtの知識が必要になってきますね。QtのリファレンスからたどれるApplication Exampleがいいでしょうか。まあ、サンプルのアプリケーションはほとんど「QMainWindow」を継承している。と書かれています。デフォルトのベースクラスもそうなっているので、ここはデフォルトのままにしておきましょう。クラス名、ベースクラス、ヘッダファイル名、ソースファイル名、フォームのファイル名の設定ができますが、いずれもデフォルトのままで行きます。

1002_qt_creator_prjfin.png
設定完了


これで、プロジェクトの設定は完了の様ですね。「Finish」。

*
さて、ソースにはデフォルトのコードが書かれている様子ですので、とりあえず、ビルドしてみましょう。「Build」→「Build All」を押してみます。・・・

・・・・何も表示が出ません。動いてるのかなんだかよくわからなかったんですが、左下の方に「Build」と言う表示がプログレスバーと共にありました。まだ、途中の様です。ビルドの様子がこれでもよくわからないので、ここをクリックしてみたところ、右下にビルド状況を示す「Compile Output」と言うペインと言うか、コーナーと言うかが出てきました。見てたら、ビルドが問題なく完了しました。

1002_qt_build.png
これは完了してからキャプチャ


さっそく実行。

1002_qt_creator_run.png
問題なく成功


何のトラブルもなく、ウィンドウが出てきました。


次回から、ちょっといじって行きたいと思います。


【参考】
Qt - Wikipedia
Qt 4.5.3: Qt Reference Documentation


Qt開発環境のインストール [NetWalker]

さて、Anjutaに続いて、2個目の開発環境になりますが、Qt関連の開発環境を入れて行きたいと思います。前回見たものの中から、下記のものを入れようかと思います。

パッケージ概要
qt4-doc-htmlQt4のAPIドキュメントのHTML版
qt4-designerGUIのデザインと作成のためのツールとか。
qt4-dev-tools開発支援用のツール郡とか。Qt Assistant、Linguist、D-Bus Viewer、Pixel Tool。
qt4-qmakeqmake。そういえば、コンパイラとかは別ですかね・・。
libpackagekit-qt11DBusインタフェースを用いているソフトウェアパッケージの管理ツールPackageKitを利用するためのライブラリ? いるのかいらないのかがよくわかりません・・。
libpackagekit-qt2上記用のQt API?
libqt4-devQt4アプリのビルドに必要な開発ツールとヘッダ。
scim-bridge-client-qt4SCIMにアクセスするためのラッパーライブラリの様子。
libqt4-scripttoolsQt Scriptと言うのを使っているアプリのための追加要素だそうです。Qt Script Debuggerが含まれているとか。
libpoppler-qt4-3PDFのレンダリングライブラリPopperを使用するための共有ライブラリだとの事です。これは欲しそうな気がしますが、まだインストールされてませんね。
libpoppler-qt4-devQt4でPDFレンダリングライブラリPopplerを利用したアプリを開発する際に必要なライブラリ。
libqwt5-qt4-dev値、表、範囲の操作・表示を行うウィジェットを使ったアプリを開発する際に使えるライブラリQwtだとの事。
ibus-qt4ibusと言う Input methodのフレームワークのためのライブラリの様子。qt-immoduleと言うのが含まれているとか。
libqwt5-qt4値、表、範囲の操作・表示を行うウィジェットを操作するライブラリQwtを使ったアプリの実効に必要なランタイムライブラリだとのこと。
kuiviewerQt Designerのデータファイル(.ui)を閲覧するためのツール。
libavahi-qt4-1Avahi Qt4 integration libraryだとか。BonjourのApple由来でない実装だそうです。。
libavahi-qt4-devAvahi Qt4 integration libraryの開発用ヘッダとか。
libqwt5-docQt4向けのQwtのドキュメントとソースサンプルが含まれているらしいです。
apport-qtアプリのクラッシュ時にクラッシュレポートを取得するのを助けるソフとの様です。
qdevelopQtのプロジェクトマネージャやソースコードエディタ、make等のビルドツールとGDBが含まれる様子。必須か?
libwvstreams4.4-qtWvStreamsとQtイベントの統合用ライブラリとか。
libcq-plugin-qtQtを使ったLicq用グラフィカルフロントエンドプラグイン(?)
avida-qt-viewerauto-adaptive genetic system Avidaのグラフィックビューワとの事。
qt-creatorQt開発用のIDE。
libdbus-qt-1-1c2アプリケーション間の通信を実現するD-BUSへのインタフェースとなる共有ライブラリだとの事。
libqtjambi-javaQt Jambiと言うJava用のフレームワーク??
libqt4-sql-psqlQt4向けのPostgreSQLプラグイン。
libqt4-sql-odbcQt4向けのODBCプラグイン。ODBCはデータベースの一種との事。
libqt4-sql-sqliteQt4向けのSQLite3プラグイン。
libzlui-qt4ZLibraryと言うクロスプラットフォームなライブラリ?
automocメタオブジェクトコンパイラmoc。たぶん必須。
libpackagekit-qt-devアプリのインストール、アンインストールなどの管理を行うためのライブラリ(?)ヘッダファイルが入っている様子。
libqca2-docSSL/TLS、X.509、SASL、OpenPGP、S/MIME CMSなどのQt Cryptographic Architectureを用いた開発をするためのドキュメント。
libqca2-devSSL/TLS、X.509、SASL、OpenPGP、S/MIME CMSなどのQt Cryptographic Architectureを用いた開発のためのライブラリ。
libqt4-ruby1.8Ruby/Qt4。サンプルプログラムなども含まれてるとの事。これも入れとこかな・・。結局これに逃げてしまいそうな予感・・。
libdbus-qt-1-devアプリ間の通信を実現するD-BUSへのインタフェースらしい。開発用ライブラリでしょうね。
libqt4-ruby1.8-devRuby/Qt4の開発ファイルだとか。サンプルなども含まれる。
libqt4-ruby1.8-examplesRuby/Qt4のサンプルの様子。Ruby/Qt4関連は全て同じ説明になっているので、どれが本当かよくわからない・・。
libqca2Qt Cryptographic Architecuterのライブラリとか。SSL/TLS、X509、SASL、OpenPGP、S/MIME CMSをサポートとか。


使うか使わないかよくわからないものも、あった方が良さげと言う感覚で選択したので、すごい量になりましたね・・。まあええか。Python関連は使う予定がないので、入れていません。SoQtは3Dグラフィック関連のライブラリの様なので、入れるのはやめました。esvnはどうしようかなとも思いましたが、とりあえず、入れないことにします。

さて、インストール指定をして行きます。「qt4-designer」を指定したところ、ついでにいろいろとライブラリが選択されました。結局、OpenGL関連も入ってしまいますね。「qt-dev-tools」で「libqt4-sql-sqlite」「qt4-doc」が同時に選択されます。「libpoppler-dev」の選択で「libpoppler-dev」も同時に。「libqwt5-qt4-dev」で「libqwt5-qt4」も。

「kuiviewer」「apport-qt」はインストールしようとしましたが、KDE関連のファイルもインストールされますね・・。ちょっと、気持ちが悪いので、入れるのをやめました。

「libwvstreams4.4-qt」「libcp-plugin-qt」「avahi-qt-viewer」「libdbus-qt-1-1c2」は同時にQt3関連のファイルが入る様なのでやめました。

「libjambi-java」はJava関連のファイルが大量に入る様なので、やめときました。そう言えば、まだJavaを入れてません。と言うか、NetWalkerでJavaが動くのかどうかがまだよくわかってませんね。

「libqt4-sql-odbc」の指定で「libiodbc2」が同時に入れられる様です。「libzlui-qt4」で「libzlcore-data」「libzlcore0.9」。「libqca2-dev」で「libqca2」。

「libqt4-ruby1.8」を入れようとしたら、これまたKDE関連のファイルが大量に表示されました。ちょっと、よくわからないので、Ruby/Qtはちょっとやめときます。なので、「libqt4-ruby1.8-dev」「libqt4-ruby1.8-examples」も入れません。

「libdbus-qt-1.dev」もQt3関連のファイルになる様ですね・・。

以上、これで「適用」です。52個の新規パッケージで、262MBのディスクが消費されるとの事・・。

1002_qt_apply.png
結構、大量


これで、インストールが完了しました。メニューを見てみると「QDevelop」「Qt 4アシスタント」「Qt 4デザイナ」「Qt 4リンギスト」「Qt Creator」が入ってます・・。「Qt 4リンギスト」って意味が分かりませんね・・。まあ、ええか。

1002_qt_menu.png
電子ブックリーダーは見なかった事にしてください


とりあえず、Qt Creatorを立ち上げてみたところ、なんかウィンドウの角が変です。しかも、ウィンドウを動かそうとしても動きません・・。

1002_qt_creator_max.png
ウィンドウの上部両端が角ばってる上に動かない・・・


焦っていじっていたら、なんと最大化されていたのでした。最大化なのにサイズが中途半端です。ウィンドウを普通の大きさに戻すと普通に動かせる様になりました。

ちなみに、「Window」→「Full Screen」を選択する事で、画面全体をすっぽり覆う事ができます。タイトルバーも無くなりました。実際に開発する際はこのスタイルがいいですね。

1002_qt_creator_full.png
スッキリしていていい感じです


ちなみに、Qt 4.5ベースでした。現在、最新版は4.6の様です。そのうち、アップデートされますかね。

1002_qt_version.png
Creatorのビルドも約1年前



以上、次回からプロジェクトを作って、試して行きたいと思います。今度はちゃんと何か完成させたいですね。


【参考】
Poppler
Qwt
Avahi
WvStreams
Licq




ブログを作る(無料) powered by So-netブログ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。