- 1 名前:デフォルトの名無しさん [2010/12/14(火) 22:42:28 ]
- 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 総合スレ 8 【Win/Mac/Linux】 hibari.2ch.net/test/read.cgi/tech/1280950209
- 2 名前:デフォルトの名無しさん [2010/12/14(火) 22:43:28 ]
- ■リンク
・Qt Development Frameworks (Nokia社のQt公式サイト) qt.nokia.com/title-jp ・SRA社(日本の代理店)の日本語で読める Qt 関連ドキュメント www.sra.co.jp/qt/relation/index.html ・Qt Users Forum Japan qtusersforum.s2.zmx.jp/forum/index.php ■ライセンス関連まとめ 各ライセンスでの自作アプリのソース公開/頒布 Qtのライセンス アプリのライセンス Qtの頒布/(変更部分のソース公開) GPL GPL(ソース公開必須) 必須 LGPL 任意(ソース公開不要) 必須 商用 任意(ソース公開不要) 不要 *: LGPLは動的リンク時 実際には他にも条件(リバースエンジニアリング関係とか)あるので、 きちんとライセンスの条文を読むこと。
- 3 名前:デフォルトの名無しさん [2010/12/14(火) 22:44:18 ]
- 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 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上でデバッグする時に必要) www.microsoft.com/japan/whdc/devtools/debugging/installx86.mspx (3)「Qt libraries for WIndows(VS 2008)」をインストール qt.nokia.com/downloads/windows-cpp-vs2008 (4)「Qt Creator Binary for Windows」をインストール 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 を使用する」のチェックを外してみる
- 4 名前:デフォルトの名無しさん [2010/12/14(火) 22:46:23 ]
- ■Qt Creator 日本語化プロジェクト
Qt Creator を日本語化するプロジェクトです(非公式) qt-creator-jp.sourceforge.jp/ ■Python バインディング PyQt4(GPL。定番) www.riverbankcomputing.co.uk/software/pyqt/intro PySide(LGPL。Win版はまだ無いけど今後に期待) www.pyside.org/ それでは、はりきってどうぞ!
- 5 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 23:06:00 ]
- >>1
乙カレーション
- 6 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 23:32:38 ]
- QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); //ソースの文字コードを指定("utf-8"や"Shift-JIS")
- 7 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 23:36:10 ]
- このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
- 8 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 23:37:54 ]
- >>2
誤解無いように言っとくとLGPLの静的リンクでもソース公開は必須では無いよ
- 9 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 07:06:27 ]
- 1Z
- 10 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 11:50:14 ]
- >>8
静的リンクをstatic linkingとする(要するにexeの中に入れる)なら、 LGPLのライブラリの使用であっても プログラム全体のソースコードの公開が必要になるよ。 DLLとlibファイルを介してexeに結合させること場合は必要ない、 というのがGPLに比べたときの劣化(Lesser)具合。 Qt自体を改変したときは、Qt部分のソースコードの公開が必要。 しかしプログラム本体には波及しない。
- 11 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:48:29 ]
- >>1 乙
- 12 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 16:02:05 ]
- >>10
現実的にはそうなるが オブジェクトコードでもいいことになってるだろ一応
- 13 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 16:24:30 ]
- 前スレの991=994?の人、もしかしてQtにはC++コンパイラが含まれてないので別途必要
ってことがわかってないんじゃない?
- 14 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 16:37:18 ]
- >>8
動的リンクの時は公開の必要ないとしか書いてないんだからあってるだろ 静的リンクのときは説明長くなるから最後の二行の通りでいいじゃん
- 15 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 17:07:03 ]
- >MinGW使わないならVS2008は必要だけど,代わりにMS SDKも使えるということ。
つまりMinGW使わない場合でもMS SDKを使えばVS2008は必要ではないということだろ
- 16 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 21:23:24 ]
- >>12
make時の *.o(windowsなら*.obj)だけを公開すればいいから十分現実的だと思うがね。 デメリットは実行ファイルのみに比べて、多少リバースエンジニアリングが楽になるくらい。
- 17 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 17:20:59 ]
- vs2008で開発しています。
uiファイルベースでQMainWindowからGUIアプリを作ってるんですが、 メインウィンドウへのアイコンの指定方法がよくわかりません。 リソースファイル(*.rc)をいじって用意したアイコンを登録して、 プログラムのアイコンには設定できたのですが、 メインウィンドウのアイコンには設定されません。
- 18 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 17:25:49 ]
- QIcon ico = QIcon(APP_ICON);
setWindowIcon(ico);
- 19 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 19:09:51 ]
- >>18
まず、APP_ICONが定義されてない。 app.qrcに<file>app.ico</file>の行を追加してもロードに失敗してなぜだろうと思ってたんだけど、 <qresource prefix="/visualchanger"> 「prefix="/visualchanger"」を省いたらいけたよ! あとは*.uiファイルに書いてしまえると便利なんだけどなぁ。 ひとまず動くようになりました。
- 20 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 11:47:10 ]
- QMenuを使ってボタンを押したら
ドロップダウンメニューが出るようにしたんだけど、 各メニュー項目にサブ項目の矢印が出る。 当然サブ項目なんて設定してない。 これって、こんなものなの?
- 21 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 12:52:32 ]
- つ addAction()
- 22 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 14:22:36 ]
- >>21
なるほど……。 各メニュー項目はQActionで、QMenuはその入れ物なのか。 ありがとうございます。
- 23 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 15:19:24 ]
- たったあれだけのヒントで全てを理解する >>20 は、きっとすごいイケメン
- 24 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 16:42:57 ]
- Qtプログラマがイケメンじゃないわけがない
- 25 名前:デフォルトの名無しさん [2010/12/17(金) 16:53:06 ]
- みなさんグラフとか使ってないすか?
QWTてのあるけど今一使い方が分からんす
- 26 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 17:23:17 ]
- QDomDocument〜QDomElementがめっさ使いにくい。
XMLを読み書きするの、何か他のライブラリを使ったほうがいいのかな。
- 27 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 17:31:53 ]
- 俺もそう思ってTinyXMLとか調べてみたけど、どのライブラリでも大体似たような
感じだよ。
- 28 名前:26 mailto:sage [2010/12/17(金) 17:53:51 ]
- 自己レス。
こういう関数を用意しておくと、foreachでループを回せるようになる。 (↑Qt特有? C++0x?) QList<QDomElement> getElementsByTagName(QDomElement elem, QString tagName) { QList<QDomElement> result; QDomNodeList childLst = elem.elementsByTagName(tagName); for (int i = 0; i < childLst.length(); i++) { QDomNode n = childLst.at(i); if(n.isNull()) continue; QDomElement child = n.toElement(); result.append(child); } return result; } ループ: QDomNodeList layersetLst = root.elementsByTagName("LayerSet"); QDomNode n = layersetLst.at(0); if(n.isNull()) return 1; QDomElement layerset = n.toElement(); foreach(QDomElement layer, getElementsByTagName(layerset, "Layer")) { printf(" Layer: %s\n", layer.attribute("name").toStdString().c_str()); foreach(QDomElement item, getElementsByTagName(layer, "Item")) { printf(" Item: %s\n", item.attribute("name").toStdString().c_str()); } }
- 29 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 18:14:55 ]
- demo/embeddeddialogsのソースを見てるんですが、
下記URLのCustomProxy::itemChangeが何をしているのかがよくわからない。 想像するに、 Dialog内にあるcombobox押下時の、 popup部分のレンダリングを高速化しているという認識で良いのかしら? コメントにしても結果が全く変わらないんだよね。 doc.qt.nokia.com/4.7-snapshot/demos-embeddeddialogs-customproxy-cpp.html
- 30 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 22:08:26 ]
- >>25
基本は QwtPlotCurve に setData でデータ詰めて、QwtPlot Widget の showCurve で表示。 QwtPlotCurve をカスタマイズすれば、いろいろなグラフが作れるので、 重宝してる。
- 31 名前:デフォルトの名無しさん [2010/12/18(土) 02:32:53 ]
- 昨日からQtを始めたて、サンプルを手本に作ってるんだが・・・。
QtGuid4.dllは正しいwindowsイメージではありません。 と言われる。 C:Qt/qt/binからコピーしてきたdllを、debug内に突っ込んだだけなんだが。 Cored4は読み込んでくれる、どう回避したらいい?
- 32 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 02:34:48 ]
- 質問いいでしょうか?
コマンドプロンプトで使うつもりで作ったプロジェクトをstaticライブラリとして読み込み、 QtのDockWidgetに出力させたいのですが、coutやcerrの出力先をDockWidgetに向けるには どうしたら良いでしょうか? 一応自分でもググったりしたのですが、わからず…。 どうかご助力お願い致します。
- 33 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 02:45:05 ]
- >>31
debug用のdllはまた別にある
- 34 名前:デフォルトの名無しさん [2010/12/18(土) 03:03:53 ]
- >>33
さんくす 調べてみる
- 35 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 03:14:09 ]
- ファイル名にdが入ってるやつと入っていないやつの2種類があるはず
- 36 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 03:44:44 ]
- 31だが
QtGui4のデバッグ用がQtGuid4ってことでいいんだよな? で、そのQtGuid4が正しくないと言われるんだが これはQtを再インストールするしかないか?
- 37 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 05:12:14 ]
- コピーじゃなくてPATHを通せ
- 38 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 09:48:24 ]
- >>32
Qtは標準入出力をハンドリングしてなさそうだから、OS固有の仕組み使うしか ないんじゃないかなー。Windowsだったら ::GetStdHandle() 使うとか。
- 39 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 11:56:30 ]
- >>36
debug用のruntimeは入れてあるよね?
- 40 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 12:02:20 ]
- >>32
自前のstreambufを実装する 例 lists.trolltech.com/qt-interest/2005-06/thread00166-0.html
- 41 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 12:36:20 ]
- >>38,40
ありがとうございます! 解決、あるいはわからないことがあればまた書き込むと思うので 厚かましいようではありますが、その時はどうかよろしくお願いします。
- 42 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 12:58:00 ]
- >>31
ビルドされたexeを Dependency Walkerに読ませて、 何のDLLを呼び出しているか調べてご覧。 Qt+vs2008だと何のDLLを利用するのかがわりと暗黙的に 行われるので、配布する前にチェックが必要。 幸い、静的にリンク解決してるのでDependency Walkerで調べられる。
- 43 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 13:05:39 ]
- >>42
それだと、ファイル名はわかるけど、どのバージョンの(≒どこにある)DLLが必要なのかが わからないのよ。 Qtは複数バージョンを入れることもままあるので、典型的なDLL地獄だねw
- 44 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 18:28:08 ]
- DLL地獄なんて昔の話で、今の Windows には無いなんて聞いてたけどまだあるのか…
- 45 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 18:53:31 ]
- >>43
exeがdllを探す順序がわかってないだけなんじゃないの?
- 46 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 19:46:11 ]
- >>43
Dependency WalkerはカレントディレクトリにないDLLを ロードする時にはそのPATHも教えてくれるよ。
|

|