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
のアイコンについていた禁止マークが無くなる。
↓↓↓
この状態でビルドし、ウィンドウを拡げてみて欲しい。ウィンドウの大きさに合わせてウィジェットが大きくなっていないだろうか。