【RAD統合環境】 Qt 総合スレ 8 【Win/Mac/Linux】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/08/05(木) 04:30:09ライブラリの機能は、フォーム、ボタンなどの各種ウィジェットからネットワーク、マルチスレッド、
グラフィックス(OpenGL)や各種コンテナ、XMLパーサー、組み込み JavaScript など、非常に多岐に渡ります。
公式の統合開発環境「Qt Creator IDE」を使えば、クロスプラットフォーム対応のRAD開発が可能です。
また、EclipseやVisual Studio上で開発したい人のためのアドインも用意されています。
■主な対応プラットフォーム(デスクトップ用途の場合)
Windows XP, Vista, 7
Mac OS X 10.4, 10.5, 10.6
Linux
■ライセンス
・オープンソース版(Open-source version)
LGPL 2.1 または GPL 3.0 のうちどちらかを利用者が選べます。
LGPL を選んだ場合はソースコード非公開のままでの商用利用が可能です(いくつか制限あり)。
※正確には通常「LGPL+商用利用向きの例外条項」を選ぶことにな7ります(Qtインストール先の「LGPL_EXCEPTION.txt」を参照)。
ちなみにGPLでも商用利用が不可能というわけではありません、念のため。
・商用版(Commercial version)
こっちはNokia社か日本の代理店(SRA社)とライセンス契約(年間30万くらい?)を結んで使います
■Qt を使って作られたソフト例
KDE、Adobe Photoshop Elements、Google Earth、Skype、DAZ Studio など
■前スレ
【RAD統合環境】 Qt 総合スレ 7 【Win/Mac/Linux】
http://pc12.2ch.net/test/read.cgi/tech/1270309416/
0002デフォルトの名無しさん
2010/08/05(木) 04:30:35・Qt Development Frameworks (Nokia社のQt公式サイト)
http://qt.nokia.com/title-jp
・SRA社(日本の代理店)の日本語で読める Qt 関連ドキュメント
http://www.sra.co.jp/qt/relation/index.html
・Qt Users Forum Japan
http://qtusersforum.s2.zmx.jp/forum/index.php
■ライセンス関連まとめ
各ライセンスでの自作アプリのソース公開/頒布
Qtのライセンス アプリのライセンス Qtの頒布/(変更部分のソース公開)
GPL GPL(ソース公開必須) 必須
LGPL 任意(ソース公開不要) 必須
商用 任意(ソース公開不要) 不要
*: LGPLは動的リンク時
実際には他にも条件(リバースエンジニアリング関係とか)あるので、
きちんとライセンスの条文を読むこと。
0003デフォルトの名無しさん
2010/08/05(木) 04:31:06・プロジェクトのパスに日本語を入れちゃダメ
・日本語のソースコードは、MinGW版ならUTF-8、VC版ならSystem(Shift-JIS)
プロジェクト作成後に「プロジェクト」タブの「エディタの設定」→「デフォルトの文字コード」を設定すると幸せになれる
・デバッグ出力などが文字化けする場合、プログラムの最初で文字コード変換設定をする
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8")); //ソースの文字コードを指定("utf-8"や"Shift-JIS")
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); //同上
qDebug() << "うまく表示できた?";
・MinGW版の配布時は mingwm10.dll も一緒に入れておく(public domain で配布上の制限はない)
■インストール方法:MinGW版Qt & Qt Creator
(1)「Qt SDK for Windows」をインストールすればOK
http://qt.nokia.com/downloads/sdk-windows-cpp
■インストール方法:VisualC++版Qt & Qt Creator
MinGW版との違い:Phononが利用可能。VC版の方がいろいろ速いらしい
(1)「Microsoft Visual C++ 2008」(Express Edition 以上) をインストール
(2)「Microsoft Debugging Tools」をインストール(※Qt Creator上でデバッグする時に必要)
http://www.microsoft.com/japan/whdc/devtools/debugging/installx86.mspx
(3)「Qt libraries for WIndows(VS 2008)」をインストール
http://qt.nokia.com/downloads/windows-cpp-vs2008
(4)「Qt Creator Binary for Windows」をインストール
http://qt.nokia.com/downloads/qt-creator-binary-for-windows
(5)環境変数PATHを設定(もともと入ってたパス;Qtインストールパス\bin)
(6)Qt Creator を起動して、「ツール」→「オプション」メニューで初期設定
「Qt4」→「Qt Versions」を開いて自動検出された「PATH に含まれる Qt」をクリックし「MSVC バージョン」を 9.0 にする
「デバッグヘルパ」が×印になっていれば「リビルド」ボタンをクリックしてリビルド(※)する
(※)もし失敗したら「プロジェクト」→「ビルドして実行」→「nmake の代わりに jom を使用する」のチェックを外してみる
0004デフォルトの名無しさん
2010/08/05(木) 04:31:22Qt Creator を日本語化するプロジェクトです(非公式)
http://qt-creator-jp.sourceforge.jp/
■Python バインディング
PyQt4(GPL。定番)
http://www.riverbankcomputing.co.uk/software/pyqt/intro
PySide(LGPL。Win版はまだ無いけど今後に期待)
http://www.pyside.org/
それでは、はりきってどうぞ!
0005デフォルトの名無しさん
2010/08/05(木) 09:39:430006デフォルトの名無しさん
2010/08/06(金) 00:18:470007デフォルトの名無しさん
2010/08/06(金) 05:18:590008デフォルトの名無しさん
2010/08/06(金) 17:28:04何を変更すれば開いてくれるんでしょうか
0009デフォルトの名無しさん
2010/08/06(金) 18:05:060010デフォルトの名無しさん
2010/08/06(金) 18:42:48失礼しました
0011デフォルトの名無しさん
2010/08/06(金) 18:52:400012デフォルトの名無しさん
2010/08/06(金) 23:19:30model = new DomModel(QDomDocument(), this);
view = new QTreeView(this);
view->setModel(model);
proxyModel = new MyTableProxyModel();
proxyModel->setProxyModel(model);
table = new QTableView(this);
table->setModel(proxyModel);
Qt examples の"simple Dom Model" をもとに、QTreeViewの全ての要素(子要素も全て)を
表示するQTableViewをproxyModelを使用して作成したいのですが、よくわかりません。
また、Itemの削除、追加も機能させたいです。可能でしたらサンプルコードを頂けませんでしょうか。
よろしくお願い致します。
0013デフォルトの名無しさん
2010/08/06(金) 23:47:360014デフォルトの名無しさん
2010/08/06(金) 23:52:040016デフォルトの名無しさん
2010/08/07(土) 01:14:020017デフォルトの名無しさん
2010/08/07(土) 03:38:100018デフォルトの名無しさん
2010/08/07(土) 03:44:010019デフォルトの名無しさん
2010/08/07(土) 22:34:45qt creatorではどこで指定すればいいんですか?
0020デフォルトの名無しさん
2010/08/07(土) 23:26:33.proにLIBS += じゃね。
http://doc.trolltech.com/4.6/qmake-variable-reference.html#libs
0021デフォルトの名無しさん
2010/08/07(土) 23:26:50thx
0022デフォルトの名無しさん
2010/08/07(土) 23:28:44qmakeについて調べてください
0023デフォルトの名無しさん
2010/08/07(土) 23:57:54もしそれが問題になったら面白そうだから是非問題を起こしてほしい
2chの対応が見たい
0024デフォルトの名無しさん
2010/08/08(日) 10:51:04qt creatorの設定で取り除けないの?
0025デフォルトの名無しさん
2010/08/08(日) 11:35:310026デフォルトの名無しさん
2010/08/08(日) 16:22:18スタティックリンクすれば?
0028デフォルトの名無しさん
2010/08/08(日) 17:44:53各makeコマンドのMakefileを出力するだけだから
そこらへんをカスタマイズすればいけるんじゃね?
0029デフォルトの名無しさん
2010/08/09(月) 10:59:08金要求すんなよ
0030デフォルトの名無しさん
2010/08/09(月) 16:34:170031デフォルトの名無しさん
2010/08/10(火) 10:35:16これの解決方法しらない?
MapToSource等を独自に書いてTreeViewからTableViewの表示は出来たんだけど、
TreeViewのsourceModelへの追加/削除をした際に、TableViewに期待通りに反映されないのよ。
助けてエロイ人。
0032デフォルトの名無しさん
2010/08/10(火) 17:52:29GUI部品はありますか?あれば乗り換える。
0033デフォルトの名無しさん
2010/08/10(火) 17:55:59003432
2010/08/10(火) 17:58:03んじゃあ、Qtやめる。
0035デフォルトの名無しさん
2010/08/10(火) 21:48:480036デフォルトの名無しさん
2010/08/11(水) 00:26:54どっかにソースあるの?
0037デフォルトの名無しさん
2010/08/11(水) 19:47:08何かいい方法ありませんか?
0038デフォルトの名無しさん
2010/08/11(水) 21:10:370039デフォルトの名無しさん
2010/08/11(水) 22:56:180040デフォルトの名無しさん
2010/08/11(水) 23:29:44ttp://gihyo.jp/dev/serial/01/qt-2009/0001
最後の「Windows」の項に記述がある。
0041デフォルトの名無しさん
2010/08/11(水) 23:43:19ウソはいけないよウソは。
0042デフォルトの名無しさん
2010/08/12(木) 00:00:39>見て判別できます
すげーな
0043デフォルトの名無しさん
2010/08/12(木) 00:59:10見ただけで違いが分かるくらい性能差があるって意味だよね
0044デフォルトの名無しさん
2010/08/12(木) 01:44:190045デフォルトの名無しさん
2010/08/12(木) 01:57:47004644
2010/08/12(木) 11:55:08けどphonon使えなかったのか・・
0047デフォルトの名無しさん
2010/08/12(木) 12:29:26004844
2010/08/12(木) 12:42:17自分の場合はqt-win-opensource-4.7.0-beta2-vs2008.exeをまずインストール。
インストールされたフォルダのmkspecs\win32-msvc2008フォルダの中にあるqmake.confの
QMAKE_CFLAGS_RELEASE = -O2 -MD
QMAKE_CFLAGS_DEBUG = -Zi -MDd
を
QMAKE_CFLAGS_RELEASE = -O1 -MT
QMAKE_CFLAGS_DEBUG = -Zi -MTd
に変更。
src\corelib\globalの中にqconfig.cppをどっかから拾ってきて入れる。※このインストーラでインストールしても入ってない。
同フォルダ内のqconfig.hの最初のほうに#define QT_DLLとあるのでそれをコメントアウト
Qt 4.7.0-beta2 Command Promptから
nmake distclean
nmake confclean
configure.exe -static -release -opensource -platform win32-msvc2008 -nomake examples -nomake demos -no-exceptions -no-webkit
nmake sub-src
を実行でできるはず。
004944
2010/08/12(木) 12:50:26moc.exeもないといわれたので同様に
修正のつどnmake sub-srcを実行
link.objがないというエラーもでたときはmakeされているやつのmakefile.releaseをいじる
0050デフォルトの名無しさん
2010/08/12(木) 18:48:340051デフォルトの名無しさん
2010/08/12(木) 23:05:200052デフォルトの名無しさん
2010/08/13(金) 00:10:12ソースコード公開しないといけないから
使えない。
0053デフォルトの名無しさん
2010/08/13(金) 00:13:280054デフォルトの名無しさん
2010/08/13(金) 01:28:580055デフォルトの名無しさん
2010/08/13(金) 01:39:590056デフォルトの名無しさん
2010/08/13(金) 12:28:41実装見られるのが嫌だったり,それを綺麗にするのが面倒だとは言ってたな。
汚い下着を見せるような気分と言っていた。
0057デフォルトの名無しさん
2010/08/13(金) 16:28:350058デフォルトの名無しさん
2010/08/13(金) 20:31:14簡単に調べて見ましたが見当たりません
それらの関数があるクラスをご存知でしたら、教えてください
0059デフォルトの名無しさん
2010/08/13(金) 20:40:500060デフォルトの名無しさん
2010/08/13(金) 20:48:43ttp://qtprogramming.s2.zmx.jp/Qt4Note/qt4_note/QContainer.html
0061デフォルトの名無しさん
2010/08/13(金) 21:09:18QCryptographicHash
ttp://doc.qt.nokia.com/4.6/qcryptographichash.html
0062デフォルトの名無しさん
2010/08/13(金) 21:15:05http://doc.trolltech.com/4.6/qcryptographichash.html
0064デフォルトの名無しさん
2010/08/13(金) 23:16:390065デフォルトの名無しさん
2010/08/14(土) 22:47:030066デフォルトの名無しさん
2010/08/14(土) 23:13:47あとからまとめてつけれませんか?
0067デフォルトの名無しさん
2010/08/14(土) 23:22:15こいつはマルチポストです。
0068デフォルトの名無しさん
2010/08/14(土) 23:31:59,,.----、
i | | | _____
/ | | | / ヽ
/ / | | | ^o^ | <ネームスペースをつけずに作ってあとで後悔することってありますか?
/ / 人ヽ、 !ー!\_/ヽ、
/ /ノ,,,,,,ヽ、ヾ .|ヾ ゞ / !ヽ`ヽ- 、
/ //、 `,ヽ .| ヾ /ヾ ヾ `ー-- 、
/ // ` '´ ,ヽ||´~~ヽ ヽ、, '"´``.、 .ヽ
| ((ー‐ ● ---.||" ,, i i;;;;" ゛;;;;i |
| ヾ、 ,. ´, 、 || ,/ |ll!!!^!!!lllノ .ノ
ヾ i lヾ i ヾ ,/ |"" ,, 'ヽ ,,, / |
| l l;;;;;`;,,,, ゞ-‐´/ ,,| ゞ`ヾ ヾ |
/ ̄\
| | <お前は マルチポスト です
\_/
_| |_
ttp://hibari.2ch.net/test/read.cgi/tech/1280950209/66
ttp://hibari.2ch.net/test/read.cgi/tech/1280914463/45
せっかく応えた俺の誠意を踏みにじりやがって。
なんか言えよお前。
0069デフォルトの名無しさん
2010/08/15(日) 10:15:280070デフォルトの名無しさん
2010/08/15(日) 11:48:270071デフォルトの名無しさん
2010/08/15(日) 18:23:27<root><test>TEST</test></root>
上記のようなXMLを下記のコードで書き換えようとしたのですが
QDomElement root = domDocument.documentElement();
QDomElement newTitleElement = domDocument.createElement("test");
QDomText newTitleText = domDocument.createTextNode("TEST!");
newTitleElement.appendChild(newTitleText);
root.appendChild(newTitleElement);
QTextStream out(file);
domDocument.save(out, 4);
結果は下記のようになってしまいました。(改行やインデントは削除しています)
<root><test>TEST</test><test>TEST!</test></root>
XQuery Update Facilityなら簡単に書き換えられるようですが、Qtではまだ使えないようですし・・・
よろしくお願い致します。
0072デフォルトの名無しさん
2010/08/15(日) 20:12:250073デフォルトの名無しさん
2010/08/15(日) 20:19:00createElementやらappendChildやら
長ったらしくて見たくない。
0074デフォルトの名無しさん
2010/08/15(日) 21:32:370075デフォルトの名無しさん
2010/08/15(日) 21:45:10GWTのコードかと思った(爆笑)
007671
2010/08/15(日) 22:28:23>結果は下記のようになってしまいました。(改行やインデントは削除しています)
><root><test>TEST</test><test>TEST!</test></root>
ではなく<root><test>TEST</test></root><root><test>TEST</test><test>TEST!</test></root>です。
>>72
すみません、書き間違いがありました。
>>73
Qtでやることばかり考えていて完全に盲点でした。
>>75
すみません。
0077デフォルトの名無しさん
2010/08/16(月) 09:07:520078デフォルトの名無しさん
2010/08/16(月) 11:12:38>ではなく<root><test>TEST</test></root><root><test>TEST</test><test>TEST!</test></root>です。
それはファイルの扱いがおかしい。outに追記しているだけ。
>>71 のコードからは71に書いてある結果が得られる。
rootからfirstChildElementでtestを取得して、replaceChildで置き換えたらうまく行った。
0079デフォルトの名無しさん
2010/08/16(月) 11:59:460080デフォルトの名無しさん
2010/08/17(火) 09:42:150081デフォルトの名無しさん
2010/08/17(火) 22:03:02008271
2010/08/18(水) 01:07:00ファイルの扱いがおかしいというのはどういう事なのでしょうか。
replaceChildに変更しただけだと特に結果は変わりませんでした。
file->open(QIODevice::ReadWrite)で開いて、最後にdomDocument.save(out, 4)で上書きになって欲しいのですがこれだと追記になってしまいます。
読み込みに使ったXML以外のファイルを保存先に変更したら上手く?いったのですが、読み込みに使ったファイルを上書きしようとしても追記になってしまいます。
現在のコードです。行数制限のため改行やif文を外してあります(動作は確認済みです)
QDomDocument domDocument;
QFile *file = new QFile("/home/hoge/test.xml");
file->open(QIODevice::ReadWrite);
domDocument.setContent(file, true);
QDomElement root = domDocument.documentElement();
QDomElement newTitleElement = domDocument.createElement("test");
QDomText newTitleText = domDocument.createTextNode("TEST!");
newTitleElement.appendChild(newTitleText);
root.appendChild(newTitleElement);
QDomElement newChild = root.firstChildElement("test");
domDocument.replaceChild(newChild, domDocument);
QTextStream out(file);
domDocument.save(out, 4);
file->close();
0083デフォルトの名無しさん
2010/08/18(水) 01:32:290084デフォルトの名無しさん
2010/08/18(水) 03:30:33XMLからDOM生成
ファイルを閉じる
DOM弄る
ファイルをWRITEで開く
DOM書き出し
ファイルを閉じる
0085デフォルトの名無しさん
2010/08/18(水) 09:11:45なんで root に appendChild した後に domDocument に replaceChild してるんだ。
そのコードだと replaceChild 失敗してるだろ。返り値チェックしてみろ。
API のドキュメントよく読め。
0086デフォルトの名無しさん
2010/08/18(水) 10:04:420087デフォルトの名無しさん
2010/08/18(水) 11:16:51高精度タイマってどういうの?
RTOS とか使わなくても平気なもの?
0088デフォルトの名無しさん
2010/08/18(水) 13:33:091msを正確に測れるレベルのタイマが欲しいです
0089デフォルトの名無しさん
2010/08/18(水) 15:24:51ただ通常のマルチタスクの状況でタイマで 1ms って正確に測れるの?
0090デフォルトの名無しさん
2010/08/18(水) 15:40:04QTimerだと若干ムラがでるのでて
15msくらいばらつきがあるみたいです。
用途としては音のループ再生をするのに精確な時間でループさせたいのです。
0091デフォルトの名無しさん
2010/08/18(水) 15:57:270092デフォルトの名無しさん
2010/08/18(水) 16:23:55一応Windowsでのみ使用する予定です。
0093デフォルトの名無しさん
2010/08/18(水) 17:11:570094デフォルトの名無しさん
2010/08/18(水) 17:14:40ttp://www.emit.jp/prog/prog_t1.html
0095デフォルトの名無しさん
2010/08/18(水) 17:18:35timeGetTimeという関数もあります。
1/1000秒単位で取得できます。(実際にはもっと精度低いですが^^;)
基本的には、GetTickCount()と同じですが
timeGetTimeの方が精度がいいという話を聞いたことがあります。
使用するにはmmsystem.hをインクルードし、winmm.libをリンクする必要があります。
timeGetTimeの精度は以下の関数で設定できます。
timeBeginPeriod
timeEndPeriod
投稿日時 - 2002-06-24 00:36:49
0096デフォルトの名無しさん
2010/08/19(木) 16:57:160098デフォルトの名無しさん
2010/08/26(木) 21:04:480099デフォルトの名無しさん
2010/08/26(木) 21:24:400100デフォルトの名無しさん
2010/08/26(木) 23:04:320101デフォルトの名無しさん
2010/08/27(金) 13:25:48いまさらになって directory を変更したくなったorz
Makefile とか見たら今 Qt を置いてる directory の path が含まれていて、位置を変更していいのかわからんorz
それに、 nmake には 2 時間くらいかかったと思うから、もう二度とやりたくないし。
■ このスレッドは過去ログ倉庫に格納されています