トップページ⇒tech
1001コメント283KB

【RAD統合環境】 Qt 総合スレ 8 【Win/Mac/Linux】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/08/05(木) 04:30:09
Qt(キュート)は C++ ベースのフレームワーク&RAD開発環境です。

ライブラリの機能は、フォーム、ボタンなどの各種ウィジェットからネットワーク、マルチスレッド、
グラフィックス(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
Windows ユーザー向け Tips

・プロジェクトのパスに日本語を入れちゃダメ
・日本語のソースコードは、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:22
■Qt Creator 日本語化プロジェクト

Qt 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:43
>>1乙
0006デフォルトの名無しさん2010/08/06(金) 00:18:47
emit otu
0007デフォルトの名無しさん2010/08/06(金) 05:18:59
>>1 Z
0008デフォルトの名無しさん2010/08/06(金) 17:28:04
QWebViewが現在開いているサイトと異なるサーバへのリンクを開いてくれないんですが、
何を変更すれば開いてくれるんでしょうか
0009デフォルトの名無しさん2010/08/06(金) 18:05:06
ウィルスバスターを無効に
0010デフォルトの名無しさん2010/08/06(金) 18:42:48
サーバが違うからじゃなくてtarget="_blank"が指定されているからでした
失礼しました
0011デフォルトの名無しさん2010/08/06(金) 18:52:40
これだけレベル低い質問者や回答者が現れるほど裾野が広がったと喜ぶべきか
0012デフォルトの名無しさん2010/08/06(金) 23:19:30
>>11
model = 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:36
貼り付けたコードの著作権は 2ch に移譲されるので 無闇に貼り付けない方がいいぞ
0014デフォルトの名無しさん2010/08/06(金) 23:52:04
著作権が2chに移譲されたらどうなるのっと
0015デフォルトの名無しさん2010/08/07(土) 00:04:56
>>13
了解しました

>>11
さわりだけでもご教授おねがいします。
0016デフォルトの名無しさん2010/08/07(土) 01:14:02
おさわりはご遠慮ください。
0017デフォルトの名無しさん2010/08/07(土) 03:38:10
>>12 いくら迄払いますか。
0018デフォルトの名無しさん2010/08/07(土) 03:44:01
おさわりは private なら無料になります
0019デフォルトの名無しさん2010/08/07(土) 22:34:45
qt以外のライブラリを使うときに、gccにオプションlを渡さないといけませんが
qt creatorではどこで指定すればいいんですか?
0020デフォルトの名無しさん2010/08/07(土) 23:26:33
>19
.proにLIBS += じゃね。

http://doc.trolltech.com/4.6/qmake-variable-reference.html#libs
0021デフォルトの名無しさん2010/08/07(土) 23:26:50
>>20
thx
0022デフォルトの名無しさん2010/08/07(土) 23:28:44
>>19
qmakeについて調べてください
0023デフォルトの名無しさん2010/08/07(土) 23:57:54
>>13
もしそれが問題になったら面白そうだから是非問題を起こしてほしい
2chの対応が見たい
0024デフォルトの名無しさん2010/08/08(日) 10:51:04
VC2008対応のqt creatorでビルドするとmsvcrt90.dllが依存するけど
qt creatorの設定で取り除けないの?
0025デフォルトの名無しさん2010/08/08(日) 11:35:31
むりぽ
0026デフォルトの名無しさん2010/08/08(日) 16:22:18
>>24
スタティックリンクすれば?
0027242010/08/08(日) 17:08:40
>>26
VC++のIDEで開発するときのスタティックリンクはわかるんですが
それをqt creatorからできないのかと思ったので
0028デフォルトの名無しさん2010/08/08(日) 17:44:53
知らないけど、qtのqmakeは
各makeコマンドのMakefileを出力するだけだから
そこらへんをカスタマイズすればいけるんじゃね?
0029デフォルトの名無しさん2010/08/09(月) 10:59:08
>>17
金要求すんなよ
0030デフォルトの名無しさん2010/08/09(月) 16:34:17
ソースコードじゃないけど、5年ぐらい前にそういう判例が出てるから。
0031デフォルトの名無しさん2010/08/10(火) 10:35:16
http://www.qtcentre.org/threads/27950-QAbstractProxyModel-MapToSource-Problem
これの解決方法しらない?

MapToSource等を独自に書いてTreeViewからTableViewの表示は出来たんだけど、
TreeViewのsourceModelへの追加/削除をした際に、TableViewに期待通りに反映されないのよ。
助けてエロイ人。
0032デフォルトの名無しさん2010/08/10(火) 17:52:29
もうMFCやだので(C#もやだ)QtにDataGridViewやFlexGridみたいなワークシートっぽい
GUI部品はありますか?あれば乗り換える。
0033デフォルトの名無しさん2010/08/10(火) 17:55:59
ないよ
0034322010/08/10(火) 17:58:03
ええ!JavaにさえJTableがあるのに!!

んじゃあ、Qtやめる。
0035デフォルトの名無しさん2010/08/10(火) 21:48:48
Gridはある夜
0036デフォルトの名無しさん2010/08/11(水) 00:26:54
テンプレにMinGW版よりVC版の方が早いってあるけど
どっかにソースあるの?
0037デフォルトの名無しさん2010/08/11(水) 19:47:08
9.5MBくらいのファイルを1MB単位でわけたいんですが、
何かいい方法ありませんか?
0038デフォルトの名無しさん2010/08/11(水) 21:10:37
鼬買い
0039デフォルトの名無しさん2010/08/11(水) 22:56:18
>>37 簡単なC++ コードを自分で書くんじゃないかしらん
0040デフォルトの名無しさん2010/08/11(水) 23:29:44
>>36
ttp://gihyo.jp/dev/serial/01/qt-2009/0001

最後の「Windows」の項に記述がある。
0041デフォルトの名無しさん2010/08/11(水) 23:43:19
>>33
ウソはいけないよウソは。
0042デフォルトの名無しさん2010/08/12(木) 00:00:39
>>40
>見て判別できます

すげーな
0043デフォルトの名無しさん2010/08/12(木) 00:59:10
常識的に考えてそれは筆者の能力が凄いんじゃなくて
見ただけで違いが分かるくらい性能差があるって意味だよね
0044デフォルトの名無しさん2010/08/12(木) 01:44:19
vs2008スタティック版C2491エラーがでて作れないんだけど誰かできた人いますか?
0045デフォルトの名無しさん2010/08/12(木) 01:57:47
VS2010でbuild出来たひといますか?
0046442010/08/12(木) 11:55:08
スタティックリンクできたー!
けどphonon使えなかったのか・・
0047デフォルトの名無しさん2010/08/12(木) 12:29:26
できたならやり方報告してくれるとありがたい
0048442010/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
を実行でできるはず。
0049442010/08/12(木) 12:50:26
あと自分の場合はbootstrap.libがないといわれたのでvisualstudio-addinいれてbootstrap.proをvisualstudioで読み込んでコンパイルして作成
moc.exeもないといわれたので同様に
修正のつどnmake sub-srcを実行
link.objがないというエラーもでたときはmakeされているやつのmakefile.releaseをいじる
0050デフォルトの名無しさん2010/08/12(木) 18:48:34
スタティックリンクのexeはサイズどのくらいになった?
0051デフォルトの名無しさん2010/08/12(木) 23:05:20
4〜5メガくらいでした
0052デフォルトの名無しさん2010/08/13(金) 00:10:12
スタティックリンクにしたら
ソースコード公開しないといけないから
使えない。
0053デフォルトの名無しさん2010/08/13(金) 00:13:28
別にソースぐらいええやん
0054デフォルトの名無しさん2010/08/13(金) 01:28:58
実装見られるの恥ずかしい///
0055デフォルトの名無しさん2010/08/13(金) 01:39:59
見られて恥ずかしいような実装してるソフトは大抵ソースを見たがる人は居ないという
0056デフォルトの名無しさん2010/08/13(金) 12:28:41
まぁ昔も有名なプログラマがオープンソースで何が嫌かというと
実装見られるのが嫌だったり,それを綺麗にするのが面倒だとは言ってたな。
汚い下着を見せるような気分と言っていた。
0057デフォルトの名無しさん2010/08/13(金) 16:28:35
別に下着ぐらいええやん
0058デフォルトの名無しさん2010/08/13(金) 20:31:14
qtでハッシュ関数(sha,md5 etc)を利用したいのですが、
簡単に調べて見ましたが見当たりません

それらの関数があるクラスをご存知でしたら、教えてください
0059デフォルトの名無しさん2010/08/13(金) 20:40:50
map
0060デフォルトの名無しさん2010/08/13(金) 20:48:43
>>58
ttp://qtprogramming.s2.zmx.jp/Qt4Note/qt4_note/QContainer.html
0061デフォルトの名無しさん2010/08/13(金) 21:09:18
>>58
QCryptographicHash
ttp://doc.qt.nokia.com/4.6/qcryptographichash.html
0062デフォルトの名無しさん2010/08/13(金) 21:15:05
>58
http://doc.trolltech.com/4.6/qcryptographichash.html
0063582010/08/13(金) 23:10:46
>>61-62
お前ら、ありがとうな
0064デフォルトの名無しさん2010/08/13(金) 23:16:39
どういたしまして
0065デフォルトの名無しさん2010/08/14(土) 22:47:03
test
0066デフォルトの名無しさん2010/08/14(土) 23:13:47
ネームスペースをつけずに作ってあとで後悔することってありますか?
あとからまとめてつけれませんか?
0067デフォルトの名無しさん2010/08/14(土) 23:22:15
>>66
こいつはマルチポストです。
0068デフォルトの名無しさん2010/08/14(土) 23:31:59
>>66
      ,,.----、
      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:28
さすがに、aes/rsaのライブラリは無いよね...
0070デフォルトの名無しさん2010/08/15(日) 11:48:27
ubuntuでQt使う時ってWindowsのlibファイルってリンクできる?
0071デフォルトの名無しさん2010/08/15(日) 18:23:27
XMLの書き換えはどのようにすればよいのでしょうか。

<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:25
replaceChild で置き換えれば。
0073デフォルトの名無しさん2010/08/15(日) 20:19:00
XMLの書き換えにjQueryは使えないのか?

createElementやらappendChildやら
長ったらしくて見たくない。
0074デフォルトの名無しさん2010/08/15(日) 21:32:37
QtってVS2010に対応してますか?
0075デフォルトの名無しさん2010/08/15(日) 21:45:10
>>71
GWTのコードかと思った(爆笑)
0076712010/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:52
どいういたしまして
0078デフォルトの名無しさん2010/08/16(月) 11:12:38
>>76
>ではなく<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:46
ありがとうございました
0080デフォルトの名無しさん2010/08/17(火) 09:42:15
どいういたしまして
0081デフォルトの名無しさん2010/08/17(火) 22:03:02
おっと、どういたしましてを言うのは俺だ
0082712010/08/18(水) 01:07:00
>>78
ファイルの扱いがおかしいというのはどういう事なのでしょうか。
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:29
qtで高精度タイマを使う方法はないのでしょうか?
0084デフォルトの名無しさん2010/08/18(水) 03:30:33
ファイルをREADで開く
XMLからDOM生成
ファイルを閉じる

DOM弄る

ファイルをWRITEで開く
DOM書き出し
ファイルを閉じる
0085デフォルトの名無しさん2010/08/18(水) 09:11:45
>>82
なんで root に appendChild した後に domDocument に replaceChild してるんだ。
そのコードだと replaceChild 失敗してるだろ。返り値チェックしてみろ。
API のドキュメントよく読め。
0086デフォルトの名無しさん2010/08/18(水) 10:04:42
Qt関係なくね?
0087デフォルトの名無しさん2010/08/18(水) 11:16:51
>>83
高精度タイマってどういうの?
RTOS とか使わなくても平気なもの?
0088デフォルトの名無しさん2010/08/18(水) 13:33:09
>>87
1msを正確に測れるレベルのタイマが欲しいです
0089デフォルトの名無しさん2010/08/18(水) 15:24:51
QTimer じゃ多分ダメなんだよね?
ただ通常のマルチタスクの状況でタイマで 1ms って正確に測れるの?
0090デフォルトの名無しさん2010/08/18(水) 15:40:04
>>89
QTimerだと若干ムラがでるのでて
15msくらいばらつきがあるみたいです。
用途としては音のループ再生をするのに精確な時間でループさせたいのです。
0091デフォルトの名無しさん2010/08/18(水) 15:57:27
OSは限定?
0092デフォルトの名無しさん2010/08/18(水) 16:23:55
>>91
一応Windowsでのみ使用する予定です。
0093デフォルトの名無しさん2010/08/18(水) 17:11:57
んじゃggr
0094デフォルトの名無しさん2010/08/18(水) 17:14:40
このサイトまだ生きてたな
ttp://www.emit.jp/prog/prog_t1.html
0095デフォルトの名無しさん2010/08/18(水) 17:18:35


timeGetTimeという関数もあります。
1/1000秒単位で取得できます。(実際にはもっと精度低いですが^^;)

基本的には、GetTickCount()と同じですが
timeGetTimeの方が精度がいいという話を聞いたことがあります。

使用するにはmmsystem.hをインクルードし、winmm.libをリンクする必要があります。

timeGetTimeの精度は以下の関数で設定できます。
timeBeginPeriod
timeEndPeriod

投稿日時 - 2002-06-24 00:36:49
0096デフォルトの名無しさん2010/08/19(木) 16:57:16
age
0097712010/08/21(土) 01:20:26
>>84,85
ご指摘されたところを変更したところ上手く動きました。
ありがとうございました。
0098デフォルトの名無しさん2010/08/26(木) 21:04:48
qtって.netやjavaみたいだよね
0099デフォルトの名無しさん2010/08/26(木) 21:24:40
どこら辺が
0100デフォルトの名無しさん2010/08/26(木) 23:04:32
言語とライブラリがごっちゃになってるばかには付き合うな。
0101デフォルトの名無しさん2010/08/27(金) 13:25:48
Open Source の ZIP 版を download して configure と nmake したが、
いまさらになって directory を変更したくなったorz
Makefile とか見たら今 Qt を置いてる directory の path が含まれていて、位置を変更していいのかわからんorz
それに、 nmake には 2 時間くらいかかったと思うから、もう二度とやりたくないし。
■ このスレッドは過去ログ倉庫に格納されています