Qt

Qt 5.0.2で静的リンク可能なQtをビルドする

 Qt5.0.2がリリースされた。以下からダウンロードできる。
http://qt-project.org/downloads
ここでは Qt 5.0.2 for Windows 32-bit (MinGW) をまずダウンロードして C:\Qt\Qt5.0.2 のような場所にインストールした。ライブラリを動的リンクする設定でビルドするといくつか必要なdllファイルを一緒に配布しなければならないので、必要なライブラリは静的にリンクしたいと思う。だが、デフォルトでは静的リンクが出来るようになっておらず、静的リンクを実現するにはQtそのものをソースファイルからビルドしなければならない。Qt5.0.1ではエラーが出てどうにもならなかったが、Qt5.0.2では修正されてビルドできるようになった。

 そこでまず、上のURLにアクセスして qt-everywhere-opensource-src-5.0.2.zip のような名前でアーカイブされているソースファイルをダウンロードし、例えば C:\Qt\qt_src_5.0.2 のような場所に解凍する。
そしてビルド用に C:\Qt\qt_static_5.0.2 のようなディレクトリを作成する。

1
2
3
4
5
> cd C:\Qt\qt_static_5.0.2
> set QMAKESPEC=win32-g++
> set QTDIR=
> set PATH=%PATH%;C:\Qt\Qt5.0.2\Tools\MinGW\bin;
> ..\qt_src_5.0.2\configure.bat -release -opensource -nomake examples -static -opengl desktop

ここで -nomake examples オプションが無いとexamplesのビルド中にエラーでこけてしまった。
configure が正常終了したらメイクを行う。

1
> mingw32-make

これで2時間ほど放置して出来上がり。

 ネットで検索すると、もっと古いバージョンでのビルドの方法が載っていたりするが、このバージョンでビルドするには全くと言っていいほど役に立たないので注意する。(例えばqmake.confを編集するとか。編集してメイクしたらエラーでこけてしまった。)

Qtでウィンドウを大きくしてもウィジェットのサイズが変わらない?

Qt Designerを使ってGUIアプリケーションを作成する時、フォームに部品(ウィジェット)をペタペタ貼り付けていくだけではレイアウトが固定されており、例えばテキストエディタみたいなものを作ろうとしてText Editウィジェットを貼り付けても

実行してウィンドウを拡げた時にText Editの大きさが固定されたままである。

そこでプロパティエディタでウィジェットの sizePolicy プロパティを例えば Expanding に変更しただけでは何らの変化も起きなかった。「Qt」で検索してみてもコードで実現するサンプルはたくさん見つかるが、Qt Designerを使って実現する例はなかなか見つからなかった。そこで「Qt Designer」で検索すると多少ヒントになりそうな記述が見つかった。

GUIアプリケーションプロジェクトを新規作成したばかりの時、フォームは mainwindow.ui というのが1つあるだけで、それを開くと MainWindow というオブジェクトに centralWidget というオブジェクトが乗っているだけだ。この状態でウィジェットを貼り付けていき、 MainWindow を選択して右クリックするとコンテキストメニューが開くはずだ。そしてコンテキストメニューの一番下に「レイアウト」という項目が無いだろうか。その中の適当な項目を選んでレイアウトを設定すると、オブジェクトインスペクタに表示されている centralWidget のアイコンについていた禁止マークが無くなる。

↓↓↓

この状態でビルドし、ウィンドウを拡げてみて欲しい。ウィンドウの大きさに合わせてウィジェットが大きくなっていないだろうか。

アーカイブ