1read 100read
2012年07月プログラム20: 【RAD統合環境】 Qt 総合スレ 14 【Win/Mac/Linux】 (248) TOP カテ一覧 スレ一覧 2ch元 削除依頼
リファクタリングをただのコード修正と思ってる人へ (274)
Mathematicaプログラミング 質問箱 その1 (335)
【.NET】F#について語れ2【OCAML】 (339)
sizeof(char)が必ず1でも、省略すべきではない (585)
「OS自作入門」 (318)
国産オープンソースDIコンテナSeasar2 その16 (497)

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


1 :2012/08/13 〜 最終レス :2012/11/07
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 総合スレ 13 【Win/Mac/Linux】
http://toro.2ch.net/test/read.cgi/tech/1329530477/

2 :
■リンク
・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は動的リンク時
実際には他にも条件(リバースエンジニアリング関係とか)あるので、
きちんとライセンスの条文を読むこと。

3 :
Windows ユーザー向け Tips
・プロジェクトのパスに日本語を入れちゃダメ
・日本語のソースコードは、MinGW版ならUTF-8、VC版ならSystem(Shift-JIS)
 プロジェクト作成後に「プロジェクト」タブの「エディタの設定」→「デフォルトの文字コード」
・デバッグ出力などが文字化けする場合、プログラムの最初で文字コード変換設定をする
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8")); //ソースの文字コードを直接指定("utf-8"や"Shift-JIS")
// QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); //システムロケールの文字コードを指定
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); //翻訳用マクロ tr()の文字コード
qDebug() << "うまく表示できた?";
・MinGW版配布時は mingwm10.dll も一緒に入れる(public domain。配布上の制限はない)

4 :
■Qt Creator 日本語化プロジェクト
Qt Creator を日本語化するプロジェクトです(非公式)
http://qt-creator-jp.sourceforge.jp/

■Python バインディング
PyQt4(GPL。定番)
http://www.riverbankcomputing.co.uk/software/pyqt/intro
PySide(LGPL。)
http://www.pyside.org/downloads/
ごちゃごちゃ言わず、QtQuickも使ってみてください(><;)

5 :
Qt 解説書
■ 実践 Qt 4プログラミング
http://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5-Qt-4%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Mark-Summerfield/dp/4873115078/ref=pd_cp_b_1
■ Qtプログラミング入門―使いやすいフレームワークを基礎から解説
http://www.amazon.co.jp/gp/product/4777516504/ref=pd_lpo_k2_dp_sr_2?pf_rd_p=466449256&pf_rd_s=lpo-top-stripe&pf_rd_t=201&pf_rd_i=487311344X&pf_rd_m=AN1VRQENFRJN5&pf_rd_r=1A9G2JCJYMD8FS57MBAC
■ 入門 Qt 4 プログラミング
http://www.amazon.co.jp/%E5%85%A5%E9%96%80-Qt-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Jasmin-Blanchette/dp/487311344X
■ Qtで簡単 GUIプログラミング―Qt入門書を読む前に読む「入門書」
http://www.amazon.co.jp/gp/product/4877832211/ref=pd_lpo_k2_dp_sr_1?pf_rd_p=466449256&pf_rd_s=lpo-top-stripe&pf_rd_t=201&pf_rd_i=487311344X&pf_rd_m=AN1VRQENFRJN5&pf_rd_r=1A9G2JCJYMD8FS57MBAC

6 :
>>1


7 :


8 :
スマホでQt動くってのはQMLだけ?
だったらマジ糞だわ

9 :
こっちにも貼っときますね。
Nokia、全Qt事業をフィンランドのDigiaに売却
http://sourceforge.jp/magazine/12/08/09/2048249
http://gihyo.jp/admin/clip/01/linux_dt/201208/13

10 :
Qt 5 マダー
R

11 :
Qt 5のリリースはされるとしてもクリスマス前かな。

12 :
またKDEは非互換直すのに長い間グダグダになんのかな

13 :
実践本に
QtConcurrent::run()で実行してるスレッドはシグナル/スロットが使えない
って書いてあるんですけど、ホント?
少なくともシグナルのemitは出来たんだけど・・・

14 :
ほんと

15 :
>>13
どういemitができた?

16 :
デザインだけ使ってみようと思ったらインストールに10GB必要とか言われるし・・・
JavaScriptでうんたら言うけど配置しただけだとXMLがあるだけだからよう分からんが、
QMLのデザイナとコンパイラだけでいいんで1GB以下で配布してくれんかなと。

17 :
ソースを自分でビルドすればいいんじゃね

18 :
>>16
SDKだったらSymbianやシミュレータのような要らないのを外せば2G未満で、インストール時間も短くなる。

19 :
一般のHTMLデザイナが使えるならコンパイラだけでもいいんだけど、項目名は独自だよね。
Examples¥4.7を丸ごとビルドしようとしたらエラーになるんですけどどうしたらいいですか?
mingw32/bin/ld.exe: cannot find -lpnp_basictoolsd
collect2: ld returned 1 exit status
セットアップではMinGWはチェック入ってるんですけど
ガジェットのサンプルはコンパイル通った。
すいません。ぐぐったら出てきました。
>あなたがbasictoolsプラグインを最初にコンパイルする必要があります
>ttp://qt.gitorious.org/+qt-develope...ins/basictools

>>18
2GBってでかいな
と思ってインスコフォルダのサイズ見たら8.71GBだった。
ファイル数165kって俺のC:ドライブより多いやんけ。
大人しくエミュ関係削除します。

20 :
>>15
自作の QObject 派生クラスで signal と slot を定義。
QueuedConnection で connect しておく。
QtConcurrent::run() に this とメソッドを渡して、そのメソッド内で emit。
slot がメインスレッドで実行される。
と、こんな感じ。
使い方あってますかね。。。

21 :
>>20
使い方あっている。そういうのはできる。
QtConcurrent自体がシグナルとスロットを使えるようになっていないということだよ。
明示的にQueuedConnectionでconnectしなくてよい。
emitされたときに別スレッドのオブジェクトのスロット呼び出しなら、QueuedConnectionになる。

22 :
やっぱりエラーは変わらず出ます。
でも、他のは一応コンパイルできるので問題ないです。
コンパイルUIにJavaScriptが使えるという点はいいなと思ったんだけど、
QT5ではQMLっていうシンプルなやつがメインになるらしいですね。
JavaScriptは使えなくなるのかな?
まあ、HTMLじゃなくXMLだから普通のHTMLエディタやブラウザで表示できないからあまり意味はなかったかも。
ネイティブ動作で軽いやつがよかったんだけど
OpenGL必要条件にってのは残念。
まあ、OpenGLが使えないのはもうスクラップになる頃だし問題ないのかな。
バージョン確認したらまだQT4だったから先の話か。
最終のQT4は取っておいたほうがよさそう。

23 :
QWebViewで表示しているテキストをプログラム側から動的に編集させたいんですけど、
QWebViewにQTextCursorやQTextEdit::insertHTMLの代わりになるものってありますか?

24 :
>>22
JavaScriptが必須になる。
Qt4はQt5リリース後にいつもの倍の2年はサポートするとDigiaが発表していた。

25 :
>>23
DOM操作で編集、examples/webkitなどを。
QTextCursorやQTextEdit::insertHTMLはQtのリッチテキスト用なので、一般的なHTMLの編集には向かない。

26 :
>>21
thx
しかし、あの文面からは
>QtConcurrent自体がシグナルとスロットを使えるようになっていないということだよ。
とは、読み取れんかった。。。

27 :
ねぇねぇ、qmlでFlickableとかやると怒られるの?

28 :
qmlって何?
Flickableって何?

29 :
Qt 5 Betaが出たというのにこの盛り上がり!

30 :
PyQtとPySideって両方残っていくのか?

31 :
>>29
ついに来ましたか。でもVS用にビルドされたのはまだっぽいですね
頑張ってソースからビルドしてみます

32 :
ビルドがすんなり通ればなあ

33 :
4.8.3ももうすぐくるな
またビルドか

34 :
>>29
QObject,QWidgetについては、びっくりするほどQt4と変化無いからな

35 :
>>29
Alphaだね。Betaと呼べるレベルじゃない。
>>34
ウィジェットにはいろいろ問題があって、安定したアプリは作れない。Qt 4と動作や描画結果が違っている。
ウィジェットがまともに使えるようになるのは、5.1からの予定。


36 :
そうですか
乗り換えはあと一年くらい見送りですね

37 :
個人的にはQt4ちっくな使い方もできる全く別のものと思ってる

38 :
>>36
ウィジェットアプリ乗り換えは、一年は待った方がいい。
>>37
小さいものやQt5でこれから作るものならそれでいい。
Qt4で作った大きなものをQt5にするのに困る。
Qt5にしないままだと半年も経てばバグ修正されなくなるし、機能追加と改良がされないので
陳腐化する。

39 :
QWidgetのデストラクタってなんでvirtual付いてないの?

40 :
>>39
基底クラスのQObjectのデストラクタがvirtualだから,QWidgetのデストラクタも
自動的にvirtualになる。

41 :
QWebViewがデッドキャッシュを解放してくれません。
以下のコードを実行するとappendした画像サイズに応じてメモリ使用量が増え続けます。
(WinXP/7環境で確認しました。)
QWebElement element = getSomeElement();
for (i = 0; i < n; i++) {
element.appendInside(createNewImgHtmlTag());
element.firstChild().removeFromDocument();
}
createNewImgHtmlTagは呼び出すたびに異なるソースへの<img>タグを生成してQString型で返す関数です。
同じソースへのタグを生成した場合はメモリ使用量が増えないので、恐らくキャッシュが原因だと思います。
QWebSettings::setObjectCacheCapacitiesでキャッシュサイズを指定しても変化はありません。
ドキュメントをクリアしても、QWebViewをdeleteLaterしても変化はありません。
この問題を解決する方法はありますでしょうか?

42 :
C++の駄目なところだよな。

43 :
QTとC#ってどっちがGUIアプリ作るの簡単?

44 :
Qt

45 :
>>41
デッドキャッシュと言っているのは具体的にどのインスタンス?
それを特定できて言っているかな?。人の性にしているけれどアプリのバグというのもあるのだよ。

46 :
テストしてみたけどこっちでも再現できたよ

47 :
ぶっちゃけ、デスクトップはQt、Web系はPerlが一番心くすぐるよね?
もっといえば、MeeGoでタッチアプリも作れれば、最高だった。

48 :
>41
そのコードで確保されたメモリはQWebView::setHtmlを呼び出すと解放されるから、
そもそもremoveFromDocumentではデッドキャッシュにならないんじゃないか?
ページの中身を編集しても、あくまでも同じページ扱いなんだろう
しかし、QWebViewを削除しても解放されないのはちょっと困るな
削除する前に必ずsetHtmlか何かを呼び出さないといけないようだ
本家WebKitの方では修正されてるのかな?

49 :
それが仕様ならJavaScriptと相性悪そうだな

50 :
>>41,48
QWebViewをdeleteしたら解放されたよ
メンバ変数でQWebElementを保持してないか?
保持してるとQWebViewをdeleteしても非ナルのまま残るぞ

51 :
使い終わったポインタにはNULLを代入しておきなさいと専門の先生が逝ってた

52 :
多分これだな
https://bugs.webkit.org/show_bug.cgi?id=61006

53 :
グロ中尉

54 :
なんでだよw

55 :
>>48,50,52
レスありがとうございます。
リンク先のパッチを反映させてみたところ劇的に改善しましたが、まだ小さなゴミが残るようですね。
ただこれもsetHtmlを呼び出すときれいさっぱり消えるようですので、定期的にページをリフレッシュするようにします。

56 :
>>47
MeeGoは遅くて重くて使えるものではなかったよ。

57 :
質問なんですが、UbuntuソフトウェアセンターでインストールしたQtCreatorを使って開発した場合はLGPLライセンスを適用できると考えてもよろしいですか?

58 :
別に何のライセンスでもいいんでない?

59 :
QtCreatorでqmakeした実行ファイルをlddで見たら必要なライブラリ一覧がでるはずなんだけど
別のPCに実行ファイルを持っていってlddしたら動的実行ファイルではありませんって出て実行できない。
これってどういうこと?
ライブラリの動的リンクができてないってこと?

60 :
59だけど32bitで開発してたのを64bit環境に持って行ってたのが原因だった
初歩的なとこだった

61 :
いつのまにかQtの公式サイトがdigia仕様になってるし4.8.3も出てるじゃないか
もうこのスレの住人はQtに興味ないのか

62 :
>61

63 :
Qt Projectの方にbookmarkしてるに1票

64 :
qglの質問はここでいいですか?

65 :
qgl って何ですか?

66 :
qglですよ

67 :
Qt OpenGLのことならここでしてもいいけど、
可能なら本家OpenGLのスレで聞いた方が回答は期待できると思うよ

68 :
質問です。QDialのプロパティでスタイルシートを設定して, QSliderと同様にハンドルを画像にしたり、
ダイアルの目盛の色を変更しようとしたのですが、背景色しかカスタマイズが無理でした。
そこでQCommonStyleをサブクラス化してカスタマイズし、setStyle()しようと思ったのですが、Qtのクラスをサブクラス化して
使用すると、自分が書いた部分のソースにもLGPLが適用されてソース公開義務が発生するという考えであってますでしょうか。
また、ソース公開が嫌な場合は、面倒ですが画像か、ペン・ブラシを使ってゴリゴリ書くしかないんでしょうか。(実は、スタイルシートで設定できるとか)
LGPL版でQt SDK 1.2.1をWindows7 64bitで使ってます。よろしくお願いします。

69 :
QTimer使ってタイムアウトごとに交互に別のSLOTを呼ぶことはできますか?
ウィジェットの背景を点滅させたいのですが。

70 :
QtでiOS用プログラムは開発できますか?

71 :
>>69
timerEventのなかで呼び分けろカス

72 :
Linux上のフレームワークでまともにリソースつっこんで開発継続してるのってAndroidくらい?
Qt Extendedってこの先生き残れるの?

73 :
お前の言うフレームワークの意味が判らん

74 :
>70
QMLでならなんとか。正式サポートは、来年のQt 5.1。

75 :
>72
Qt Extendedはとっくになくなっている。その後継のMeeGoも瀕死状態。

76 :
QNetworkReply reply = manager->get(request);
これでエラーが出るんですがどうすればいいですか?

77 :
managerはQNetworkAccessManagerです
requestはQNetworkRequestでUrlを設定しています

78 :
エラーの内容を貼らないと誰も答えられない

79 :
× QNetworkReply reply = manager->get(request);
○ QNetworkReply *reply = manager->get(request);

80 :
3ヶ月前のだけどQt開発者のブログ記事ちょっと訳しときますお
全部翻訳するのは面倒なので要点だけ
■QPointerを使い続けよう(Continue using QPointer)
http://www.macieira.org/blog/2012/07/continue-using-qpointer/
Qt5開発の初期に、我々はQPointerを廃してよりモダンなQWeakPointerに
置き換える決定を行いました。しかし、この決定はいまや覆されました。
QPointerを使っていた場所ではQPointerを使い続けてください。
QWeakPointerは、QSharedPointerとの連携以外では使わないでください。
決定までの経緯の要点
・QPointerはQt3時代の古い実装を引きずっていて、非常に遅かった
・Qt4.5で登場したQWeakPointerは速く効率的な実装だったので、
 QSharedPointerに対応する弱参照という本来の役割だけでなく、
 QObjectへの弱参照であるQPointerの代替との役割も担えるようにした
・しかし去年の11月にある開発者が、QPointerの内部をQWeakPointerで実装しなおした
・さらに、実際にQt5で使われているQPointerをQWeakPointerにリプレースしようと
 したところ、非常に膨大な作業量が発生することがわかった
■まとめ
すなわち、あなたはQPointerを使い続けるべきです。もしあなたがQt4を使っているなら
残念ながら実装の高速化は期待できませんが、少なくともクリーンなコードではあります。
QWeakPointer::data() は非推奨となるので、使ってはいけません。
Qtのスマートポインタは今では下記のようにグループ分けされます。
・共有データ:QSharedDataPointer, QExplicitlySharedDataPointer("侵入的ポインタ"として知られる)
・共有ポインタ:QSharedPointer, QWeakPointer(C++11のstd::shared_ptrに相当)
・スコープドポインタ:QScopedPointer, QScopedPointerArray(RAIIで使われる)
・QObjectトラッキング:QPointer(QObjectインスタンスのライフタイムを監視する)

81 :
>・しかし去年の11月にある開発者が、QPointerの内部をQWeakPointerで実装しなおした
なんだこれ

82 :
iOS/Androidで本当に動くようになるんだろうか心配だ

83 :
昨日、Windows に Android 用 Qt 開発環境の Necessitas をインストールしてみたよ。
http://sourceforge.jp/projects/sfnet_necessitas/
途中、いろいろハマったけど、最終的にはアプリがビルド出来て、実機で動作させることが出来た。
まだいろいろな機能は試してないし、問題もありそうだけど、
Qt で書いたプログラムがちゃんと動作したのは感激だった。

84 :
Androidアプリはネイティブで動くの?
それとも仮想マシン上?

85 :
NDK使ってるから、ネイティブで動いているんだと思う

86 :
Necessitasはβ1になったばっかりだからやるならちょうどいいかもよ

87 :
ライセンスはどう?
LGPLならAndroidの場合apkにパックされて配布されるから、LGPLに従ってソース公開しないとダメなのかな?

88 :
http://sourceforge.net/p/necessitas/wiki/Necessitas%20licensing%20policy/
によるとQtライセンスに準じてNecessitasでの追加部分はBSDライセンスってことみたい。
フリーソフトではなくてもMinistroサービスを自由に使えると強調されているのでそこがミソなんだろう。

89 :
ありがとう。
ということはやっぱりLGPLかぁ。

90 :
ひとまずiOSに対応しないと始まらない

91 :
>>87
LGPLなQt library部分は別パッケージでインストールされて、実行時に
アプリケーションから動的リンクされるよ

92 :
iOSとAndroidへの対応が生命線だと思うんだが、なかなかだな…

93 :
モバイルへの対応は所詮客寄せパンダ
Qtはデスクトップあっての物種だよ
Qt5でデスクトップでも将来性を示すのが最優先だろう

94 :
デスクトップでQtを積極的に用いる必然性がない
cadとブラウザ、photoshopぐらいしか思い浮かばない
どこの市場でQtが採用される需要があるんだ?
スマホ対応されてやっと触ろうって気になる程度だよ

95 :
>>91
おー、サンキュー!
ライセンスがクリアできるならちょっと挑戦してみようかな。

96 :
学生の頃はqtやc++がプロフェッショナルのための道具だと思っていたが、
実際に社会へ出てみると何処で使われているのか非常に悩ましい

97 :
デスクトップでクロスプラットフォームっていうのがそもそも微妙なんだよな
Mac使ってるのはWinに比べりゃ無視でくるほど少数のカルトの教徒しかいないし
LinuxやUnixをデスクトップで使ってるのなんて、それこそ中二病こじらせたようなのしかいないから

98 :
>>97
お、おう…そうですね(棒)。

99 :
今度の私の仕事は、設計の面子にはLinuxで、オペレータにはWindowsでってことで、Qtになったよ。
まぁ、ジャンル自体がニッチなんだけどね。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
いもうとデスクトップを実際に作ってみないか?3 (849)
Java系スクリプト言語Groovy (845)
なぜポインタで引っかかる人が多いのか (803)
【論理】Prolog【初心者】 (606)
いもうとデスクトップを実際に作ってみないか?3 (849)
Gtkプログラミング on Windows!!! (343)
--log9.info------------------
【裏ミク】初心者〜古参雑談スレ【ixim】part16 (842)
【mixi】あげますください・フリマ系【痛い奴】8 (592)
【mixi】ドラモンマスター part2 (415)
【GREE】スター・ウォーズコレクション ジェダイvsシス【SWC】 (343)
【不具合】恋してR・2【当たり前】 (537)
【GREE】 モンハン探検記 まぼろしの島 HR16 (1001)
ヒメキス kiss of princess Part73 (916)
【GREE】超破壊!!バルバロッサ☆2【悪魔っ娘】 (567)
【GREE】ワールドサッカーコレクション19【KONAMI】 (872)
【最悪】ボダ・似非メンヘルに困っている人【最低】 (866)
【GREE】ドラゴンコレクション565匹目 (1001)
【GREE】戦国キングダム27【1位の国も奥義戦】 (535)
●●●skypeでむかつく女総合●●● (730)
SNS総合招待スレッド4 (763)
Ri無条件招待スレ (221)
偽名でFacebook (934)
--log55.com------------------
Apple Pay 48
iPad mini Part70
Apple Music 37曲目
12.9インチ iPad Pro 7ぺン目
【薄い、安い、速い】iPod touch(第7世代)
iPhone7/7 Plus Part 57
AirPods 47
10.5インチ iPad Pro 35