【RAD統合環境】 Qt 総合スレ 9 【Win/Mac/Linux】at TECH
【RAD統合環境】 Qt 総合スレ 9 【Win/Mac/Linux】 - 暇つぶし2ch2:デフォルトの名無しさん
10/12/14 22:43:28
■リンク

・Qt Development Frameworks (Nokia社のQt公式サイト)
URLリンク(qt.nokia.com)

・SRA社(日本の代理店)の日本語で読める Qt 関連ドキュメント
URLリンク(www.sra.co.jp)

・Qt Users Forum Japan
URLリンク(qtusersforum.s2.zmx.jp)


■ライセンス関連まとめ

各ライセンスでの自作アプリのソース公開/頒布

Qtのライセンス   アプリのライセンス     Qtの頒布/(変更部分のソース公開)
GPL           GPL(ソース公開必須)      必須
LGPL         任意(ソース公開不要)      必須
商用          任意(ソース公開不要)      不要

*: LGPLは動的リンク時

実際には他にも条件(リバースエンジニアリング関係とか)あるので、
きちんとライセンスの条文を読むこと。


3:デフォルトの名無しさん
10/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
 URLリンク(qt.nokia.com)

■インストール方法:VisualC++版Qt & Qt Creator

MinGW版との違い:Phononが利用可能。VC版の方がいろいろ速いらしい

(1)「Microsoft Visual C++ 2008」(Express Edition 以上) をインストール
(2)「Microsoft Debugging Tools」をインストール(※Qt Creator上でデバッグする時に必要)
 URLリンク(www.microsoft.com)
(3)「Qt libraries for WIndows(VS 2008)」をインストール
 URLリンク(qt.nokia.com)
(4)「Qt Creator Binary for Windows」をインストール
 URLリンク(qt.nokia.com)
(5)環境変数PATHを設定(もともと入ってたパス;Qtインストールパス\bin)
(6)Qt Creator を起動して、「ツール」→「オプション」メニューで初期設定
 「Qt4」→「Qt Versions」を開いて自動検出された「PATH に含まれる Qt」をクリックし「MSVC バージョン」を 9.0 にする
 「デバッグヘルパ」が×印になっていれば「リビルド」ボタンをクリックしてリビルド(※)する
 (※)もし失敗したら「プロジェクト」→「ビルドして実行」→「nmake の代わりに jom を使用する」のチェックを外してみる

4:デフォルトの名無しさん
10/12/14 22:46:23
■Qt Creator 日本語化プロジェクト

Qt Creator を日本語化するプロジェクトです(非公式)
URLリンク(qt-creator-jp.sourceforge.jp)


■Python バインディング

PyQt4(GPL。定番)
URLリンク(www.riverbankcomputing.co.uk)

PySide(LGPL。Win版はまだ無いけど今後に期待)
URLリンク(www.pyside.org)


それでは、はりきってどうぞ!


5:デフォルトの名無しさん
10/12/14 23:06:00
>>1
乙カレーション

6:デフォルトの名無しさん
10/12/14 23:32:38
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); //ソースの文字コードを指定("utf-8"や"Shift-JIS")

7:デフォルトの名無しさん
10/12/14 23:36:10
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

8:デフォルトの名無しさん
10/12/14 23:37:54
>>2
誤解無いように言っとくとLGPLの静的リンクでもソース公開は必須では無いよ

9:デフォルトの名無しさん
10/12/15 07:06:27
1Z

10:デフォルトの名無しさん
10/12/15 11:50:14
>>8
静的リンクをstatic linkingとする(要するにexeの中に入れる)なら、
LGPLのライブラリの使用であっても
プログラム全体のソースコードの公開が必要になるよ。

DLLとlibファイルを介してexeに結合させること場合は必要ない、
というのがGPLに比べたときの劣化(Lesser)具合。

Qt自体を改変したときは、Qt部分のソースコードの公開が必要。
しかしプログラム本体には波及しない。

11:デフォルトの名無しさん
10/12/15 14:48:29
>>1

12:デフォルトの名無しさん
10/12/15 16:02:05
>>10
現実的にはそうなるが
オブジェクトコードでもいいことになってるだろ一応

13:デフォルトの名無しさん
10/12/15 16:24:30
前スレの991=994?の人、もしかしてQtにはC++コンパイラが含まれてないので別途必要
ってことがわかってないんじゃない?

14:デフォルトの名無しさん
10/12/15 16:37:18
>>8
動的リンクの時は公開の必要ないとしか書いてないんだからあってるだろ
静的リンクのときは説明長くなるから最後の二行の通りでいいじゃん

15:デフォルトの名無しさん
10/12/15 17:07:03
>MinGW使わないならVS2008は必要だけど,代わりにMS SDKも使えるということ。

つまりMinGW使わない場合でもMS SDKを使えばVS2008は必要ではないということだろ

16:デフォルトの名無しさん
10/12/15 21:23:24
>>12
make時の *.o(windowsなら*.obj)だけを公開すればいいから十分現実的だと思うがね。
デメリットは実行ファイルのみに比べて、多少リバースエンジニアリングが楽になるくらい。

17:デフォルトの名無しさん
10/12/16 17:20:59
vs2008で開発しています。

uiファイルベースでQMainWindowからGUIアプリを作ってるんですが、
メインウィンドウへのアイコンの指定方法がよくわかりません。

リソースファイル(*.rc)をいじって用意したアイコンを登録して、
プログラムのアイコンには設定できたのですが、
メインウィンドウのアイコンには設定されません。

18:デフォルトの名無しさん
10/12/16 17:25:49
  QIcon ico = QIcon(APP_ICON);
  setWindowIcon(ico);


19:デフォルトの名無しさん
10/12/16 19:09:51
>>18
まず、APP_ICONが定義されてない。

app.qrcに<file>app.ico</file>の行を追加してもロードに失敗してなぜだろうと思ってたんだけど、
<qresource prefix="/visualchanger">


「prefix="/visualchanger"」を省いたらいけたよ!

あとは*.uiファイルに書いてしまえると便利なんだけどなぁ。
ひとまず動くようになりました。

20:デフォルトの名無しさん
10/12/17 11:47:10
QMenuを使ってボタンを押したら
ドロップダウンメニューが出るようにしたんだけど、
各メニュー項目にサブ項目の矢印が出る。
当然サブ項目なんて設定してない。

これって、こんなものなの?


21:デフォルトの名無しさん
10/12/17 12:52:32
つ addAction()

22:デフォルトの名無しさん
10/12/17 14:22:36
>>21
なるほど……。
各メニュー項目はQActionで、QMenuはその入れ物なのか。
ありがとうございます。

23:デフォルトの名無しさん
10/12/17 15:19:24
たったあれだけのヒントで全てを理解する >>20 は、きっとすごいイケメン

24:デフォルトの名無しさん
10/12/17 16:42:57
Qtプログラマがイケメンじゃないわけがない

25:デフォルトの名無しさん
10/12/17 16:53:06
みなさんグラフとか使ってないすか?
QWTてのあるけど今一使い方が分からんす

26:デフォルトの名無しさん
10/12/17 17:23:17
QDomDocument~QDomElementがめっさ使いにくい。

XMLを読み書きするの、何か他のライブラリを使ったほうがいいのかな。

27:デフォルトの名無しさん
10/12/17 17:31:53
俺もそう思ってTinyXMLとか調べてみたけど、どのライブラリでも大体似たような
感じだよ。


28:26
10/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:デフォルトの名無しさん
10/12/17 18:14:55
demo/embeddeddialogsのソースを見てるんですが、
下記URLのCustomProxy::itemChangeが何をしているのかがよくわからない。

想像するに、
Dialog内にあるcombobox押下時の、
popup部分のレンダリングを高速化しているという認識で良いのかしら?
コメントにしても結果が全く変わらないんだよね。

URLリンク(doc.qt.nokia.com)

30:デフォルトの名無しさん
10/12/17 22:08:26
>>25
基本は QwtPlotCurve に setData でデータ詰めて、QwtPlot Widget の
showCurve で表示。
QwtPlotCurve をカスタマイズすれば、いろいろなグラフが作れるので、
重宝してる。

31:デフォルトの名無しさん
10/12/18 02:32:53
昨日からQtを始めたて、サンプルを手本に作ってるんだが・・・。
QtGuid4.dllは正しいwindowsイメージではありません。
と言われる。
C:Qt/qt/binからコピーしてきたdllを、debug内に突っ込んだだけなんだが。
Cored4は読み込んでくれる、どう回避したらいい?

32:デフォルトの名無しさん
10/12/18 02:34:48
質問いいでしょうか?
コマンドプロンプトで使うつもりで作ったプロジェクトをstaticライブラリとして読み込み、
QtのDockWidgetに出力させたいのですが、coutやcerrの出力先をDockWidgetに向けるには
どうしたら良いでしょうか?

一応自分でもググったりしたのですが、わからず…。
どうかご助力お願い致します。

33:デフォルトの名無しさん
10/12/18 02:45:05
>>31
debug用のdllはまた別にある

34:デフォルトの名無しさん
10/12/18 03:03:53
>>33
さんくす
調べてみる

35:デフォルトの名無しさん
10/12/18 03:14:09
ファイル名にdが入ってるやつと入っていないやつの2種類があるはず

36:デフォルトの名無しさん
10/12/18 03:44:44
31だが
QtGui4のデバッグ用がQtGuid4ってことでいいんだよな?
で、そのQtGuid4が正しくないと言われるんだが
これはQtを再インストールするしかないか?

37:デフォルトの名無しさん
10/12/18 05:12:14
コピーじゃなくてPATHを通せ

38:デフォルトの名無しさん
10/12/18 09:48:24
>>32
Qtは標準入出力をハンドリングしてなさそうだから、OS固有の仕組み使うしか
ないんじゃないかなー。Windowsだったら ::GetStdHandle() 使うとか。


39:デフォルトの名無しさん
10/12/18 11:56:30
>>36
debug用のruntimeは入れてあるよね?

40:デフォルトの名無しさん
10/12/18 12:02:20
>>32
自前のstreambufを実装する

URLリンク(lists.trolltech.com)

41:デフォルトの名無しさん
10/12/18 12:36:20
>>38,40
ありがとうございます!

解決、あるいはわからないことがあればまた書き込むと思うので
厚かましいようではありますが、その時はどうかよろしくお願いします。

42:デフォルトの名無しさん
10/12/18 12:58:00
>>31
ビルドされたexeを
Dependency Walkerに読ませて、
何のDLLを呼び出しているか調べてご覧。

Qt+vs2008だと何のDLLを利用するのかがわりと暗黙的に
行われるので、配布する前にチェックが必要。
幸い、静的にリンク解決してるのでDependency Walkerで調べられる。

43:デフォルトの名無しさん
10/12/18 13:05:39
>>42
それだと、ファイル名はわかるけど、どのバージョンの(≒どこにある)DLLが必要なのかが
わからないのよ。

Qtは複数バージョンを入れることもままあるので、典型的なDLL地獄だねw

44:デフォルトの名無しさん
10/12/18 18:28:08
DLL地獄なんて昔の話で、今の Windows には無いなんて聞いてたけどまだあるのか…

45:デフォルトの名無しさん
10/12/18 18:53:31
>>43
exeがdllを探す順序がわかってないだけなんじゃないの?

46:デフォルトの名無しさん
10/12/18 19:46:11
>>43
Dependency WalkerはカレントディレクトリにないDLLを
ロードする時にはそのPATHも教えてくれるよ。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch