2011-09-01から1ヶ月間の記事一覧

並列処理中のGUIの更新

OpenMP の parallel for の最中に GUIを更新したい場合があります。ループの全てでコールバックすると、クラッシュしてしまうので、メインスレッドの時だけ呼ぶようにすると大丈夫なようです。 int step = 0; #pragma omp parallel for for (int j=0; j<100;…

サブメニューを作る

お久しぶりです。QtCreatorのフォームデザイナ上でサブメニューを作成する方法が分からなかったので、コードで書く方法を取りました。なるほど、QActionじゃなくてQMenuを追加して、そこにサブメニューとなるQActionを追加するんですね。 QMenu* menu = new …

MacとWindowsのアプリケーション用アイコンを指定する

Qt用のアイコンリソースの用意の仕方は、検索すれば詳しい解説が出てきますので、そちらを参考ください。さて、MacとWindowsではリソースが異なるのですが、一つの *.pro ファイルでどうやって指定すれば良いのでしょう? QMAKEの解説を見ていたら、 win32:R…

saveState() と saveGeometry()

http://d.hatena.ne.jp/QtCoder/20110811/1313022743 (ToolBarやDockWidgetの状態を保存する以前、このような内容の記事を書きましたが、勘違いしてた所がありました。MainWindow の saveGeometry() によって、DockWidgetのサイズも保存されるかと思っていた…

QtCreatorでツールチェインを指定する

IDEっ子なので知らなかったのですが、ビルド時に使うコンパイラやリンカの指定を、ツールチェインと呼ぶみたいですね。昨日のトラブルも、コンパイラがVisualStudioのものになってたのが原因でした。このツールチェインは、QtSDKに入っている「Maintain Qt S…

uint8_t, uint32_t が使えなくなった

QtSDK (QtCreator) を最新版にしたら、uint8_t, uint32_t が使えなくなりました。 #include <inttypes.h> も使えないようで、困りました……どうしよう(涙)。 uint8_t byteVar = 0; uint16_t wordVar = 0; uint32_t dwordVar = 0; ……と思ったら、mingw32でなく、MSVCを使</inttypes.h>…

ShellExecute的な何か

指定のパスをExplorerやFinderで開いたり、指定のURLをブラウザで開きたい事があります。 // ブラウザで開く QUrl url = QUrl( "http://qt.nokia.com/title-jp/" ); QDesktopServices::openUrl( url ); // ExplorerやFinderでローカルパスを開く QString pat…

AppData的な何か

アプリケーションで使う設定ファイルは何処に保存するべきでしょう? 昔は実行ファイルと同階層に保存していましたが、これはOSのセキュリティの都合上、無理になってきました。Windowsなら「AppData」と呼ばれる、アプリケーション用のファイルを保存する場…