[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 03/20 20:05 / Filesize : 177 KB / Number-of Response : 682
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 15:09:46 ]
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 を選んだ場合は商用利用が可能です(いくつか制限あり)。

・商用版(Commercial version)
 こっちはNokia社か日本の代理店(SRA社)とライセンス契約(年間30万くらい?)を結んで使います

■Qt を使って作られたソフト例

KDE、Adobe Photoshop Elements、Google Earth、Skype、DAZ Studio など

■前スレ

【RAD統合環境】 Qt 総合スレ 5 【Win/Mac/Linux】
pc12.2ch.net/test/read.cgi/tech/1254366507/

2 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 15:10:43 ]
■リンク

・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 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 15:11:44 ]
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 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 15:16:28 ]
これもテンプレなのかな

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

5 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 16:41:31 ]
次スレ前にすべりこみで質問です

シグナルをemitする時にnewしたデータを渡すのですが
あとで拡張する際にスロット側でdeleteするのを忘れそうで嫌です
あらかじめ、delete処理をするスロットを作ってconnectしておこう、と考えたのですが
qtはスロットを実行する順序を決めてないそうなので困っています
実行順序を決めるような機能はないでしょうか、あるいはそんなテクニックはないでしょうか
よろしくお願いします

6 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 17:03:13 ]
>>1

前スレ >>986
index.parent().parent()
up_button() に渡された index と親ディレクトリの関係をよく考えよう。

あと、今後を考えると QDirModel よりも QFileSystemModel を使うほうがいいかも。
ttp://labs.trolltech.com/blogs/2010/01/08/qdirmodel-is-now-obsolete-qfilesystemmodel-is-taking-the-job/

>>
SLOT は基本的に接続された順番に呼び出される。
>If several slots are connected to one signal, the slots will be executed one after the other,
>in the order they have been connected, when the signal is emitted.
ttp://qt.nokia.com/doc/4.6/signalsandslots.html#signals

けれど、new して使わなくなったら消したいということなら
QSharedPointer を使うことを検討したほうがいいと思う。

7 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 18:58:54 ]
>>5
QSharedPointer

8 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 19:36:06 ]

>>6

すいません、今日なんとか自己解決しました

9 名前:デフォルトの名無しさん [2010/01/29(金) 20:43:23 ]
>>5
コピー可能なデータを渡すようにするのが安全です。
QStringやQPixmapなどはimplicit sharedなので、データ部分は共有して、
intやdoubleと同じ感覚で引渡せるので効率的かつ安全です。

10 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 08:08:26 ]
>>5
転載感謝です

>>7
これならreference countがあるので
シグナルをemitする関数が終了しても解放されず
スロット終了時に自動で解放されるというわけですね

>>9
implicit sharedというのがあるんですね
Qtが一部クラスに限ってQSharedPointer的機能を予め使っているというイメージでしょうか?
引数を渡すときにreference countを増やすには、参照渡しではなく値渡しでおこない
値渡しで渡すと、コピーコンストラクタによってshallow copyが行われるため高速に実行することができ、
なおかつreference countが増えているのでemitする関数が終了しても実体は破棄されないという事ですか
QByteArrayもimplicit sharedらしいのでこれを使う事にしてみます

皆さんありがとうございました



11 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 14:08:04 ]
qt4のドキュメント探していると、qt3のドキュメントが沢山出てくるわけですが
qt3のドキュメントはどこまで信用していいのですかね?
つまり、qt4でプログラミングをする時に、qt3のドキュメントをどこまで参照していいのか?と

12 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 14:28:22 ]
>>1
>LGPL 2.1 または GPL 3.0 のうちどちらかを利用者が選べます。
> LGPL を選んだ場合は商用利用が可能です(いくつか制限あり)。

以前も話題になったけど、これは誤解を生む表現だから消した方が良いと思う。
GPL/LPGL と商用利用は直接的にリンクしている訳ではないからね。
「GPL を選んだ場合は商用利用が可能です(たくさん制限あり)」というだけで。

13 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 14:34:57 ]
>>12
> 「GPL を選んだ場合は商用利用が可能です(たくさん制限あり)」というだけで。

はLGPLの誤りだよね。

で、どう誤解を生むの?
別にウソ書いてるわけじゃないからいいんじゃないの?
「LGPL を選んだ場合は商用利用も可能です(いくつか制限あり)」
にした方が良い程度の話だと思うが。


14 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 14:36:52 ]
>>13
>はLGPLの誤りだよね。

違うよ。

15 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 15:20:29 ]
>>13
> 別にウソ書いてるわけじゃないからいいんじゃないの?
いやウソ書いてるよ。


16 名前:デフォルトの名無しさん [2010/01/31(日) 15:21:28 ]
>>11
Qt3についての記述は、気にせず無視して問題ありません。
リファレンスマニュアル (doc.trolltech.com/4.6/) にQt3の記述があるのは、
Qt3 Support (doc.trolltech.com/4.6/compatclasses.html) だけで、ここにある
クラスは、Qt3からQt4に移行する際に、一時的に使われるクラスで、Qt4で最初からプロ
グラムを書くならば、まったく使う必要がないからです。

17 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 15:23:15 ]
>>13はGPLを知らなかったのか。。。

18 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 15:25:05 ]
>>16
わかりました
親切な解説ありがとうございます

19 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 15:37:09 ]
>>13
>で、どう誤解を生むの?

GPL だと商用利用してはいけないという誤解。

20 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 15:45:41 ]
>13がフルボッコすぎるwww



21 名前:13 mailto:sage [2010/01/31(日) 16:32:39 ]
スマソ。>>12の言ってる意味を勘違いしてた。
GPLでもLGPLでも、制限事項が違うだけで商用利用は両方とも可能だっつうこと
だったんだね。叩かないで〜w

22 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 22:10:26 ]
Qtで使われてるLGPLだとどんな制限があるんだ?

・Qtライブラリを利用しても、自分の書いたソースのライセンスは自由に設定できる
・Qtライブラリそのものに手を加えた場合は(ライブラリ以外の改造箇所も含め)全てのソースをLGPLで配布しなければならない
・Qtライブラリのヘッダファイルをincludeしたり、Qtライブラリ中のクラスを継承するなどは、Qtライブラリの改造とはみなされない
・LGPLであるQtライブラリを利用したこと、Qtライブラリのソースを入手できることを明記し、LGPLを添付しなければならない
・ディスクなどのメディアに入れてソフトウェアを配布している場合は、希望者がいた場合には(無償、あるいは多くとも実費(メディア代など)+手数料程度の金額で)Qtライブラリのソースを配布しなければならない
・ネットでのソフトウェア配布の場合は、ネットでの入手方法を明記しておけばよい

こんな感じ?

23 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 00:16:41 ]
LPGA

24 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 04:21:57 ]
>>12
「ひとことで言ってQtはいわゆる商用OKなの?」という点はQt入門者の多くが聞きたいだろうから、
削除するより注意書きを足す方がいいと思うな
もうちょっと正確性を期してこんな感じでどうだろう

・オープンソース版(Open-source version)
 LGPL 2.1 または GPL 3.0 のうちどちらかを利用者が選べます。
 LGPL を選んだ場合はソースコード非公開のままでの商用利用が可能です(いくつか制限あり)。
 ※正確には通常「LGPL+商用利用向きの例外条項」を選ぶことになります(Qtインストール先の「LGPL_EXCEPTION.txt」を参照)。
  ちなみにGPLでも商用利用が不可能というわけではありません、念のため。


25 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 04:30:44 ]
>>22
動的リンクの場合の話だよね。自分の理解だとこういう感じ

著作権の表示と、LGPLライセンスのコピーの配布
・ドキュメントにQtの著作権表示を入れておく。またLGPLライセンスのコピーを配布物/販売物に含めておく
・Qtをリンクしたプログラムが実行時になんらかの著作権表示をする時は、
 Qtの著作権表示と上記LGPLライセンスのコピーの所在の表示もしなければならない

リバースエンジニアリングの許可
・正規ユーザーに対して、個人的な利用のための(Qtをリンクした)プログラムの改変とリバースエンジニアリング(解析)を禁じてはならない
 ※例えばユーザーが個人的なバックアップを行うためにコピープロテクト機能を外すことは、
  プロテクト機能がQtをリンクした実行バイナリに含まれるなら禁止できません。当然ですが不正コピーは禁止できます

Qtのバイナリの再配布に伴うソースコードの配布
・Qtの動的リンク用バイナリ(DLL等)を一緒に配布/販売した場合は、以下のどちらかを行う
 (1)Qtのソースコードを配布物/販売物に含めておく(※Qt4.6.1のVS2008版だと194MBですね)
 (2)少なくとも3年間は有効な書面として以下の旨の申し出を添える
  「希望者には(無償、あるいは多くとも実費(メディア代など)+手数料程度の金額で)改変したQtライブラリのソースコードを配布すること」
  ※参考までに、玄人指向の製品「玄箱」のGPLアプリのソースコード配布は1000円(税込)/振込手数料はユーザー負担みたいです

オマケ。Qt LGPL例外条項
・Qtのクラスを継承したりマクロやインライン関数等を利用することはQtのLGPLコードを含んだとはみなされない


26 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 12:02:30 ]
商用利用と言っても、委託開発とパッケージ販売で違ってくると思うけどな。
不特定多数に「頒布」するのはGPL/LGPLの制限を受けるけど、
委託されてその顧客専用バージョンを開発するのはほとんど制限をうけないはず

27 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 12:04:34 ]
「玄箱」のGPLアプリのソースコード配布
リバースエンジニアリングの許可

は、同じこといってるんだよね
フリーウェアで出してもソースの公開義務みたいのは発生するんだろうか・・・(謎

28 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 15:37:44 ]
>>26
制限を受けないというより、委託の場合は二者間+Nokiaだけの話なので
二者が納得していてNokiaが気にしない/気づかない限りはGPL/LGPLを破っても事実上問題がおきないってことかと

ただし顧客専用バージョンのQtソースを顧客が欲しがった時に
契約や企業間の力関係を傘にきて突っぱねるような明らかなGPL/LGPL違反があると
もし内部告発がおきてネット等を巻き込んだ場合に社会倫理的な問題になると思う
Nokiaは訴訟を起こさないかも知れないけど、問題を解決するために契約を強く勧めるかも知れない
リスク回避するならソースを渡す準備がある旨を伝えるのが無難かと

29 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 17:02:28 ]
難しいこと考えず素直にライセンス料払えば
何も問題ないような・・・

30 名前:デフォルトの名無しさん [2010/02/01(月) 18:35:56 ]
>>27
>委託されてその顧客専用バージョンを開発するのはほとんど制限をうけないはず
顧客と組織が別なら不特定多数への配布と同じ扱いです。



31 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 18:51:00 ]
顧客が内部利用だけで第三者に配布しないのであればソースを要求できるのは
その顧客だけだから両者で同意がなされれば問題無いと言ってるんじゃないかな?

32 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 23:16:55 ]
>内部利用だけで第三者

系列内で子会社孫会社、と解釈範囲が拡大するような
用途でも、内部利用だと言えそうだお(キリ

完全にインハウスでだけで使うツールなら問題なさそうだが
サード的な別組織に配布る段階で lgpl 発生すると思うの…

33 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 23:24:02 ]
×別組織に配布る段階で lgpl
○別組織の人間が使用する段階で lgpl

というほうが正確か・・・

34 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 23:46:19 ]
GPL(LGPLも含む)の規定では配布する側がソースを提示する義務を負う。
だからこの場合は顧客が子会社も含めてバイナリ配布して要求されれば
顧客がソースを渡さないといけない。
顧客がそれを理解していれば問題無い。

35 名前:デフォルトの名無しさん [2010/02/02(火) 01:30:47 ]
>>34
その言い回しはLGPLが必ずソースを要求するみたいに思われそう

LGPLを選択-ダイナミックリンク-未改変のQtのDLLを一緒に配布:Qtのインストーラーを渡す(>>25のケース)
LGPLを選択-ダイナミックリンク-改変したQtのDLLを一緒に配布:改変後のQtライブラリの完全なソースコードを渡す
LGPLを選択-スタティックリンク-未改変のQtのDLLを一緒に配布:プログラムをビルドできるオブジェクトコードまたはソースコード+Qtのインストーラーを渡す
LGPLを選択-スタティックリンク-改変したQtのDLLを一緒に配布:プログラムをビルドできるオブジェクトコードまたはソースコード+改変後のQtライブラリの完全なソースコードを渡す


36 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 01:44:29 ]
だけどLとか関係無くGPLの名がついてたらアリの様に全てのソース出せと群がってくるんだぜ
反論したって無駄なんだぜ

37 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 05:51:51 ]
そのためにライセンス規定文書を一緒に配布するんじゃないのか?

38 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 07:29:41 ]
>>36
そんなやついねーよw

39 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 09:57:34 ]
全ソースの冒頭に入れないと駄目なのかなあれ > ライセンス規定書
エントリポイントだけじゃ駄目ぽ?何かまちまちでよくわからんです・・・

40 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 10:44:53 ]
ライセンスを書いたテキストファイルを置いておけばOK
ソースの先頭に書くかどうかはコーディングスタイルの問題
1ファイルだけ取り出してもライセンスを間違えないというメリットがある



41 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 19:48:07 ]
QObject::connect(button, SIGNAL( clieked() ), &app, SLOT(quit()) );
これは、buttonインスタンスのcliecked()メソッド(シグナル)が
appインスタンスのquit()を呼び出しているってことでおk?

42 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 19:53:03 ]
>>41
違う。
buttonのclicked()がappのquit()を呼び出しているのではなく
buttonのclicked()シグナルがemitされたら
appのquit()が(Qtに)呼び出されるように登録している。

43 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 20:57:58 ]
>>42
それじゃ、もしもみたい内容だったならば単純にclieked()を実行して終わりってことなんですか?
clieked() {
 if( false ) {
  emit *
 }
}


44 名前:デフォルトの名無しさん [2010/02/02(火) 22:08:45 ]
>>43
そのレベルじゃ説明しきれないから下記ページでシグナル/スロットについて学んできて下さい。
doc.trolltech.com/4.6/signalsandslots.html

45 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:05:52 ]
Qtのプログラムを作るときってどういう順番で作る?

まずQtとは関係のないコアの部分を組み立てて、その後QtでGUI周りを作る?

46 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 01:23:30 ]
GUI も本質的には Qt と無関係だから
Qt Designer で .ui ファイル作って Load

47 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 10:09:22 ]
どんなプログラムかにもよるのでケースバイケースだけど...

基本的にプログラムは「使ってもらう」ものなので,俺の場合はプログラムの顔である
GUI側からQt Creatorで作り始めて,先にGUIの動作確認をした上で段々中味(ボタン
をクリックしたときのスロットの中味とか)を埋めていくことが多い。中味を埋めるまでは
適当にメッセージボックスでも出るようにしておくとか,ただ何もしないだけにしておく
こともある。

ハードウェアの制御が絡んでいるような場合には,先ずその制御部分のクラスを作って
おいて,簡単なテストプログラム(GUIはデザインとか無視の超テキトー)を書いてテスト
しておくことが多いかな。それから本物のGUIを作って最後にドッキング。

48 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 11:58:54 ]
>>45
Qt使う場合はデスクトップアプリしか作らんけども、
データ周り>GUI>MVCでいうコントローラに当たる部分
っていう順で作ってる。


49 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 12:03:55 ]
>>48
つまり M -> V -> C の順ということですね
ありがとうございます

50 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:36:59 ]
Mac で Qt 使ってる人に質問なんですが
Objective-C で Qt 使えるんですか?



51 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 20:04:40 ]
Macユーザー関係ないような?
10年くらい前にObj-C Qtバインディングをやった人がいたみたいだけど今はもう無いらしいよ
Python、Ruby、Perl、C#のバインディングはすぐ見つかるけど
更新が活発でQt4.6にもついて行ってるのはPyQt4だけかな

52 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 20:25:40 ]
>>50
Qt(C++)からObjective-Cなら使えるけどそれじゃダメ?

53 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 20:59:25 ]
Objective-C++でいいならCocoaとQtを混ぜて使う記事が
el-tramo.be/blog/mixing-cocoa-and-qt

54 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 21:48:39 ]
そこまでするなら wxWidget 系に行くか

java - swt, java - swing 系行くかのほうが
ぜったい楽だと思うの

55 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 21:51:33 ]
www.harukaze.net/~haruka/wxpython/index.html

mac だし

56 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 22:39:08 ]
>>51
> Python、Ruby、Perl、C#のバインディングはすぐ見つかるけど

C#に関してkwsk

57 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 22:45:40 ]
ggr C# Qt Bindings

58 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 23:36:02 ]
>>57
ろくな日本語ソースがひっかからない(´・ω・`)

59 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 00:06:22 ]
>>58
それはイバラの道だからではw

60 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 01:44:48 ]
カレンダーコントロールというか
DatePicker みたいなもので
標準的なものはありますか?



61 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 01:48:09 ]
QCalendarWidget

62 名前:デフォルトの名無しさん [2010/02/04(木) 06:38:56 ]
>>58
英語のソースでよいというのが大勢になって来たからではないか。

63 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 11:11:27 ]
サンプルソースだけで何とかなるからなぁ

64 名前:デフォルトの名無しさん [2010/02/04(木) 15:31:35 ]
Qtで3Dバリバリのネットゲーを作れますか?
Windows向けにDirectXでやるか、マックやLinuxユーザーでも遊べるような環境を使うかで悩んでるんですが。

実行速度で言うと
 DirectX>Qt>Silverlight>AIR>JavaFX

で、対応するプラットフォームだと、
 JavaFX>Qt>AIR>Silverlight>[MSの壁]>DirectX

みたいな理解でok?

65 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 15:43:59 ]
ok
作れます

次のかたどうぞ

66 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 18:21:54 ]
Qtって速いの?

67 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 19:08:49 ]
>>64
それだけよむとQt最強だな。

68 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 19:10:15 ]
でもC++がちょっとアレな子だからなぁ

69 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 19:54:32 ]
>>68
それをいうな。
Qtみたいなすごいものが作れるんだぞ。
立派な言語じゃないか。

70 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 21:31:40 ]
そもそも手段と目的がごっちゃになってて
比較対象がおかしいと思うの・・・ > GUI の選択 と 言語の速さ

別に GUI ライブラリいらないよ > 3Dゲー



71 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 21:39:00 ]
ネトゲだとチャット機能実装あたりに
少なくとも文字入力に関するライブラリは無いと困る気はする

72 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 23:19:47 ]
>>68
C++みたいな猛獣を繋ぐ鎖としてはGUI以外でもQtは良い線いってると思うけどな。
いざとなれば鎖を離せるのが猛獣使いQtの強みの一つでもある。ただ自己責任で。

73 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 23:26:29 ]
>>72
先生!
私の同僚が勝手に鎖を解き放ちました!


74 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 23:38:14 ]
>>73
動物園から出さないようにお願いします

75 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 04:15:29 ]
Qt のマクロは C++ なのに Objective-C っぽく見せてくれる側面はあるね

76 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 06:57:34 ]
>>75
どういうことですか?

77 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 08:44:57 ]
>>76
たぶんシグナルスロット機構のことじゃね
あんま知らないがCocoaは(C#も)シグナルスロットに似たデリゲートというのをよく使うらしい
マクロってよりqmakeの機能な気がするけど

78 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 10:18:01 ]
moc

79 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 14:41:06 ]
クラス名をみてるとどうしてもメロリンQとハイキングウォーキングQ太郎の顔がチラつくんですが、どうしたらいいですか?

80 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 14:44:10 ]
>>79
メロリンQとハイキングウォーキングQ太郎を見たら
Qtがちらつくようになるまで修行しろ



81 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 14:56:25 ]
>>80
がんばります!!!

82 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 15:40:27 ]
なんでQuickTimeと紛らわしい名前にしたんだろう
検索のたびにうざいんだが

83 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 16:05:36 ]
>>82
-QuickTimeと入れれば多少マシになる。

84 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 16:30:00 ]
>>83
知らなかったぜ。
そうか、引き算すればいいのか。



85 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 18:59:05 ]
あんまりかわらん

86 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 20:54:55 ]
>>82
-QuickTime -twitter
検索ではいつも2つ除外してます

87 名前:デフォルトの名無しさん [2010/02/06(土) 00:38:38 ]
Qt Creatorって使い方覚えれば結構勝手が良さそうだな
ぼちぼちメニューも日本語化がすすんできたみたいだし

88 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 04:53:35 ]
Win7、VS2008、Qt4.6の環境で、QProcess::startDetachedを使って
アプリケーションを引数付きで呼び出そうとしているのですが
引数の中に「"」が含まれていると「\」がつけられて「\"」になってアプリケーションに渡されてしまいます。

QProcess::startDetached(ExePath, QStringList() << "--foo=\"bar\""); // --foo="bar"を渡したいが、--foo=\"bar\"がわたってしまう

main関数のargvでは「\"」が「"」に変換された状態で取得できるようですが、
winmainのlpCmdLineやGetCommandLine APIでは「\"」のままなので
そのまま処理をしていると思われるWindowsアプリケーションが引数を処理できません。

QProcess::startDetached(ExePath + "--foo=\"\"bar\"\"");
でもやってみましたが今度は「"」が無くなるだけで
\"\"\"bar\"\"\"にしてもやはり「\"」が渡されてしまいます。

「\"」への変換なく「"」のまま渡すにはどうすればいいのでしょうか。

89 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 06:35:16 ]
だれが\を付けてるのかをはっきりさせた方が良い

90 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 07:41:20 ]
>>87
うん。慣れてくると結構いいよ。今までC++ Builder使ってたけど、「遜色ない」と
までは行かないものの、そんなに不満はない。

最初は各種の設定を.proファイルに手書きしなきゃならないのが「何だかなぁ」と
思ったけど、慣れてくるとGUIのチェックボックスやラジオボタンでいろいろ選択
して設定したりするより楽だと思うようになった。

翻訳はぼちぼちどころじゃなくて、ほぼ完全。翻訳されてないのはほんの数単語。

ちょっと戸惑うのは、レイアウト類の扱い。Qt Designerでも同じだと思うんだけど、
手書きでコード書いた場合とちょっと違う。実は隠れウィジットの上にレイアウト
が乗ってるので、レイアウトのサイズをマウスで変えられる(ように見える)。
しかもこの隠れウィジットのプロパティは一切変えられらない(表示されない)。
なので、「入門Qt4プログラミング」に書いてあるレイアウトの使い方とちょっと
雰囲気が変わる。

エディタは「余計なお世話」をかなりしてくれるので、設定で折り畳み機能とか
OFFにして使ってる。でも外部エディタはあまり使わずに済んでるから、結構
使いやすいのかも。

デバッガの起動時に時間がやたら掛かるのが難点かな...(VC++でcdbの
場合の話)。MinGW+gdbでは最近やってないからどうだったか忘れた。



91 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 07:51:49 ]
>>88
QProcessが怪しいと思うが
とりあえずsystem()使ってみたらどうだろう

92 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 10:01:41 ]
>>88
ほぼ同じケースで、結局解決してないのがあるね
www.qtcentre.org/threads/11476-arg!!!!-QProcess-on-win32

corelib\io\qprocess_win.cppの問題だと思うなこれ

93 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 19:38:36 ]
CarbideでQt使ってる人いますか?
CreatorみたいQtのリファレンスを見たいんですが(F1とかで)
できないんでしょうか?

94 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 19:59:11 ]
QDataStream に QString(QObject::trUtf8("ほげ")) を << で出力したものを保存後
そのファイルを開いて QDataStream から >> で QString s に読み込みました
これを cout << s; で出力すると ?? と文字化けします
下のように書き換えて
cout << s.toAscii.data();
再コンパイル後改めて読み込みしてもやっぱりだめです
QByteCode s と定義し直して
cout << s.data();
ますます意味不明です
どうすれば良いのか途方に暮れております
Windows Vista で mingw 版 Qt を使用 ソースは UTF-8 で保存しています

95 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:04:31 ]
qPrintable( const QString & str )

96 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:10:40 ]
wxスレで質問してたひとかな?

97 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:23:12 ]
>>95
ありがとうございました

またまた質問で申し訳ありませんが
QMap<HOGE, FUGA> のインスタンス m を JSON っぽく qPrintable してくれるような関数かマクロってありますか?
m.toStdString()
m.toString()
m.toAscii().data()
qPrintable(m)
どれも無いみたいで・・・ orz

探すより iterator 回して実装した方が早いような気もしますが
もし既に便利なものあるなら使いたいです

98 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:25:07 ]
お好きにどうぞ

99 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:26:17 ]
>>97
> 探すより iterator 回して実装した方が早いような気もしますが
天才ですか!?
探すより早いなら実装しろよ



100 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:37:07 ]
>>97 じゃないけど
QString pMap2Str(QMap<QString, int> &map)
{
QStringList sl;
QMapIterator<QString, int> i(map);
while(i.hasNext()){
i.next();
sl.append(QObject::tr("'%1': '%2'").arg(qPrintable(i.key())).arg(i.value()));
}
return QString(QObject::tr("{%1}").arg(sl.join(", ")));
}

こんな感じ?
templateでQMapの型を可変にする方法は知らん



101 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:40:33 ]
iPhone用のアプリはQtで書けるんでしょうか?

102 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:42:13 ]
>>100
ありがとうございました
参考にします

103 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:50:38 ]
>>101
ttp://www.qt-iphone.com/

104 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:58:26 ]
>>103
Thx!

105 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 21:12:21 ]
Qtでもっさりiphoneアプリ

106 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 21:24:00 ]
Qt iPhone は移植終わってないけどな。

107 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 21:36:08 ]
Qt on android って今どんな感じ?

108 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 21:40:34 ]
その前にQt on Dalvikが必要にならんか、それは

109 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 22:26:40 ]
>>89,91,92
レスありがとうございます。
system関数を使うことで目的の動作を行うことができました。

110 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 00:41:44 ]
NokiaなのにAndroidとかiPhoneも対応されるのかい?



111 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 00:53:44 ]
オプソだから対応する人がいれば対応されるだろう・・・

112 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 02:11:03 ]
ライセンス料ぼったくりのQualcomは倒産しろ

113 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 13:10:55 ]
>>112
auも巻き添えになってNokiaに買収されるといい。

114 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:07:37 ]
code.google.com/p/android-lighthouse/

115 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:45:51 ]
>>114
ヲヲヲヲ!?w
これでSymbian、WMは公式で愛ポンと闇泥井戸と全部制覇か
これで本気出してC#からC++に移る勉強するw

116 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:41:45 ]
>>115
> これで本気出してC#からC++に移る勉強するw

C#をマスターしている人間が、あらためてC++で学ぶようなことってあるか?

117 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:13:21 ]
C#は窓でしか使えないじゃん

118 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:29:15 ]
いやそういう意味じゃなくて、C#でオブジェクト指向言語を習得した人が
あらためてC++でオブジェクト指向言語を勉強し直す必要がありますか、って意味ね

119 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:40:52 ]
じゃあ、C#できる人は全員C++マスターだね!!

120 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:48:50 ]
>>119
思わず笑ってしまった



121 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:52:29 ]
>>118
どうみてもC#の方が簡単(つか楽)なんですけど・・・

122 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 20:49:17 ]
じゃあその簡単とやらのC#をデフォルト言語に採用してよ>Qt

123 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:00:11 ]
>>118

124 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:03:40 ]
>>122
C#は窓でしか使えないじゃん

125 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 22:07:50 ]
んな〜こったない

126 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 00:18:08 ]
Qtに関していえば、QObjectの秀逸なポインタ管理のおかげで、
QObjectの中でQObject使う場合は自分でdeleteする必要ないんで、
ちょっとしたもの作るだけならガーベッジコレクションしてくれる
メモリ解放不要な言語とそう大きく変わらないんじゃないかなぁ。

QtはC++の機能を最大限に使いつつ、C++の面倒なところをユーザに押し付けないライブラリだと思ってる。

127 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 00:25:57 ]
ってことはあれじゃね、GUIアプリを組むとき以外もQtって使えるってことじゃね?

128 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 00:34:51 ]
うんそうだよ
それに気付いてからBoost捨てた

129 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 03:19:56 ]
暗黙の共有というしくみがあるのは分かったのですが
QString str1 = "hoge";
QString str2 = str1;
のあと
str2[1] = 'a';
を実行すると Copy on Write が発動して
str2 が "hage" になっても str1 は "hoge" のままというのとは逆に
あえて
str1 が "hage"
になって欲しいときはどうすれば良いのでしょうか?

130 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 04:39:51 ]
参照にすればいいんじゃね?



131 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 06:05:20 ]
>>94
QApplication app(argc, argv);
のあとに
QTextCodec::setCodecForCStrings(QTextCode::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
を書き足す

132 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 11:43:00 ]
>>127
qdbusはQt使ったコンソールアプリだな。
コンソールアプリケーション作るときはQApplicationじゃなくQCoreApplication使うらしい。

133 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 16:19:00 ]
>>131
訂正
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));


134 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 16:47:14 ]
>>130
やってみます
ありがとうございました!!

135 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 20:40:51 ]
std::coutに相当する機能を教えてください

136 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 20:49:28 ]
stdout 用に作られているインスタンスはないので下記のようにして作る。
QTextStream cout(stdout, QIODevice::WriteOnly);

137 名前:135 mailto:sage [2010/02/08(月) 20:52:19 ]
>>136
ありがとうございます

138 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 20:54:30 ]
qDebug()を使ってみたのですが何も出力されません
なにかあらかじめ設定しないといけないモードとかあるのでしょうか?

139 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 21:10:28 ]
ttp://www.kde.gr.jp/~ichi/qt/qmake-manual-4.html
Windows を使っていて、コマンドラインからこのアプリケーションを実行したときに
qDebug() の出力を見ることができるようにしたい場合、
アプリケーションをコンソールの設定でビルドする必要があります。
Windows で Make ファイルをこの設定にするには、CONFIG に console を追加します。
Windows で実行されていて、かつ CONFIG にすでに debug がある場合にのみ
CONFIG を追加したい場合があるかもしれません。
このような場合、2 つのスコープをネストさせて使います。
まず 1 つのスコープを作成し、その中にもう 1 つスコープを作成します。
そして 2 つのスコープの中に設定を書きます。例えば :

win32 {
debug {
CONFIG += console
}
}


140 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 21:22:42 ]
>>139
できました
ありがとうございます

なぜかよく分かりませんが std::cout も使えるようになりました
本当にありがとうございました




141 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 21:38:58 ]
前スレ
959 デフォルトの名無しさん [sage] 2010/01/26(火) 15:22:56 ID: Be:
ソースファイルのエンコードが"で囲んだ文字列リテラルに影響するため、
Qtに文字列を渡すには、一度文字コードを変換する処理を挟まなければならない。

例えばutf-8のソースファイル内で文字列リテラルにマルチバイト文字が含まれている場合、
そのままでは文字化けしてしまうので、QString::fromUtf8()などの変換メソッドを通す必要がある。

以下のサンプル(ソースはutf-8)を実行すると、Utf8の変換メソッドを通した文字列以外は文字化けする。
変換メソッドを通すのが面倒な場合は、コメント部分を有効にすれば良い。
直接書いた他の文字列が文字化けすることがなくなる。

//QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8"));
//QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));
//QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));
const char* cptr = "ffあ";
QString qs = "ffあ";
QString qs_fromUtf8 = QString::fromUtf8("ffあ");
qDebug() << cptr;
qDebug() << qs;
qDebug() << qs_fromUtf8;
qDebug() << tr("ffあ");
qDebug() << trUtf8("ffあ");

と試した限りでは以上のように理解したけどどうでしょ。

// Qt Creator 作成の新規ファイルの文字コードがSystemから変えられないのはどうにかならんかな
// プロジェクト設定のデフォルトの文字コードはなんの意味があんねん

142 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 21:49:08 ]
こちら Qt 4.5.1 mingw 版 ソースは UTF-8 で保存
Windows Vista のコマンドプロンプトで make & 実行

QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
しておいて

QString msg(QObject::tr("テスト")); // ソースは UTF-8 QString msg は UCS2 ?
std::cout << qPrintable(msg) << std::endl; // SJIS で出力された
qDebug() << qPrintable(msg); // SJIS で出力された
qDebug("%s", qPrintable(msg)); // ??に化けている(デコードが変?)

もしかして qDebug の中で変なことやってる?

143 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 22:01:35 ]
上の続き

qDebug() << msg; // "二重引用符で囲まれてSJISで出力された"

string s = msg.toStdString(); // setCodecForCStrings() で文字化け回避
std::cout << s << std::endl; // SJIS で出力された
qDebug() << s.c_str(); // SJIS で出力された
qDebug("%s", s.c_str()); // ??に化けている(デコードが変?)


144 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 22:57:13 ]
>>142-143
qDebug(fmt, ...);
の場合、渡す文字列はutf8固定。
(ちなみに、fmtはLatin1固定)
QString::sprintf() を内部で使っているため。
ttp://doc.trolltech.com/4.6/qstring.html#sprintf

qDebug("%s", msg.toUtf8().constData());
としてみると動かないかな。

145 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 01:12:11 ]
動きました
ありがとうございました

146 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 01:49:36 ]
どっかのサイトでqDebugは日本語使えないって書いてあったのを見た気がするが都市伝説だったのか

147 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 03:19:38 ]
Qt CreatorってVisual Studioみたいに入力補完とかしてくれる?
たとえばQtのクラス名を補完してくれたり、あるいは自作のクラス、
それに付随するフィールドや関数を補完してくれたりする?

148 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 03:31:24 ]
する

149 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 03:36:31 ]
お前は2chよりどっかのわけのわからんサイトを信用するのか

150 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 03:54:03 ]
Python に eric4 っていう IDE があるんだけど
これって Qt4 の作者と同じ人の作ったもの?



151 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 03:55:13 ]
>>148
thxノシ

つ〜かそれだったらさ、C++のプログラム組むのにわざわざ金出してVS買うよりも
フリーのQt Creatorを使った方がよくね?

152 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 04:19:32 ]
>>146
このスレでも前スレのテンプレまではqDebugで日本語ムリってなってたぞ

153 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 05:20:55 ]
>>152
ほんとだ
記憶違いかと思ってたけど安心した

結局 >>144 で fmt は Latin1 固定ってなってるから
qDebug("日本語 %s %s ほげ", QObject::tr("ふが").toUtf8().constData(), QObject::tr("はげ").toUtf8().constData());
はだめで
qDebug("%s %s %s %s", QObject::tr("日本語").toUtf8().constData(), QObject::tr("ふが").toUtf8().constData(), QObject::tr("はげ").toUtf8().constData(), QObject::tr("ほげ").toUtf8().constData());
なら OK ってことだぬ

154 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 06:00:36 ]
>>151
動けばいいってんならその考え方でOK

155 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 06:10:45 ]
>>147
Qt Creatorの補完機能は結構優れものだと思う。

156 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 06:50:02 ]
Visual C++の奴よりもよくできてるよな。
補完が動かなかったらコードミスを疑うようになるレベル

157 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 09:23:04 ]
>>155
eclipse版も同レベル?

158 名前:155 mailto:sage [2010/02/09(火) 11:05:18 ]
使ってないからわからない。使ってる人ヨロシク。

159 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 11:24:48 ]
>>157
eclipse で使う場合は eclipse が元々持っている補完機能を使うことになる。
SIGNAL や SLOT マクロの中を補完できないので Qt で書く場合には
個人的には Creator の方が楽。

160 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 20:28:59 ]
Qtと関係なくC++を勉強する人にもQt Creatorは実はおぬぬめじゃね?



161 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 20:41:36 ]
まじか。
Qt Creatorすげぇ。


162 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:40:44 ]
QtCreator上のデバッグって
なんかウインドウ上部に大きさ変えられないデバッガ出力があるんだが
下にもコンソールあるし邪魔くさくね?
あれ消せないんだろか

163 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:51:30 ]
>>160
そうかい?
基本的なC++から勉強したいからCDTでやってるが
いきなりマクロだらけのOtからだとキツイw

164 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:59:49 ]
Qtはどんどん新機能が付いて更新が楽しいわ

165 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 01:09:05 ]
これはすごいと思った

166 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 01:09:45 ]

YouTube - Qt Widgets enter the third dimension: WolfenQt
www.youtube.com/watch?v=MXS3xKV-UM0

167 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 01:16:51 ]
>>163
キツくないよ
楽だろ
そりゃマクロのせいで元々のC/C++の機能かQtの機能かの区別がわからないひとは
あとで知識の再整理が必要になるだけで
今後もQtしか使わないかもしれない訳で困ることじゃない

168 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 01:19:12 ]
>>165-166
すまんが使い道が思い浮かばん

169 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 01:31:14 ]
>>166
それかw
すごいとは思うがゲーム以外の何で役に立つのか分からん。

170 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 01:42:47 ]
単純に技術としてすごいと思った



171 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 02:00:28 ]
そろそろカウボーイビバップみたいなネットブラウズさせてくれ

172 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 16:14:57 ]
>>166
すげぇ

ところで、株価データ
2003-04-23,11:23:11,43,33,44,22
みたいなデータを読み取りたいんだけど、
QTextStreamのデリミタを『,』に変えられない?
それかscanf的なものはない?



173 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 17:11:45 ]
QString::split() でわけるとか
QRegExp を使うとか。

174 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:03:44 ]
コンソールアプリで日本語出力しようとして困ったので調べてみた。
結果から言うとUTF-8のソースファイルはでも日本語出力可能。

----------------------------------------------
//QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));

QTextCodec *codec = QTextCodec::codecForLocale();
qDebug() << codec->name();
qDebug() << "1:あああああ";

printf(codec->makeEncoder()->fromUnicode("2:いいいいい\n"));
printf(QString("3:ううううう\n").toLocal8Bit());
printf("4:えええええ\n");

QTextStream out(stdout);
out << QString("5:おおおおお") << endl;
out << QTranslator::tr("6:かかかかか") << endl;
out << "7:ききききき" << endl;
----------------------------------------------

printf()は直での文字リテラル指定はだめ。
QString()やtr()で文字列を囲むなりして、Qtの変換を通さないとダメ。


175 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:14:17 ]
tr()使えよ

176 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:17:32 ]
QTextStream out(stdout);
out.setCodec("UTF-8");

177 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:56:20 ]
テキストデータを一行ずつ保存する関数 WriteLine() があるけど
これを使ってテキストデータを保存するとき、プラットフォームによって
生成されるテキストデータに違いって生じる?

WindowsやUnixやMacで改行に違いがあるって聞いたけど
Qtはそこのところどう対処しているんだろう?

178 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 00:02:35 ]
やってみよう

179 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 00:06:51 ]
やりたいけどLinuxしか持ってないんだよな

180 名前:デフォルトの名無しさん [2010/02/11(木) 00:07:29 ]
>>177
WriteLineってざっと探しても見つからないんだが、どこの関数?
それはともかく、改行コードって自分で文字列に埋め込むもんだと思うんだが。



181 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 00:13:03 ]
Python とかだと \n の扱いを LF にするか CRLF にするか選べるよね
CR は論外として

182 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 00:13:57 ]
tr()使えよ

183 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 01:00:43 ]
>>180
C#と勘違いしてたスマソ・・・

184 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 01:19:58 ]
QIODevice::Text 付きでopenすると、"\n"の出力が Unix系では"\n"のまま
Windowsでは"\r\n"に変換される。入力なら逆。
どちらの環境でも同じ改行形式にするなら QIODevce::Textを付けずに
"\n","\r\n"を明示すればいい。

185 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 03:41:57 ]
>>184
ありがとう。
やっぱ同じQtソースでも動かすプラットフォームによって生成されるテキストファイルに
違いが生じてきたりしちゃうんだね。

186 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 04:29:15 ]
51のC#バインディングって "Qyoto" って奴か
見た目は悪くない
zetcode.com/tutorials/qyotosharptutorial/dialogs/

使い物になるならいいかもな

187 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 06:18:54 ]
くょーと?

京都?

188 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 09:02:58 ]
>FAQ:
>
> 1. After compiling and installing qyoto when I try to compile a program I get this error:
>** (/usr/lib/mono/1.0/mcs.exe:18770): WARNING **: The class System.Collections.Generic.List`1 could not be loaded, used in mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
>
>This is because qyoto uses .NET 2.0 features only found with the gmcs compiler. Please use gmcs instead of mcs.

ekarchive.elikirk.com/david/qyoto/index.php?option=com_content&task=view&id=25&Itemid=58

古いほうのページをみるとわかりやすいけど
gmcs でないと動かない

189 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 10:09:42 ]
Ubuntu9.10で、Creator1.2.1使ってますが
同時にGEditeなど他のエディタを開いてコピペにて、Creatorに戻って
別のコピペをしても、前のコピーが残ったままでCreatorを一度終了するまで
正常にならナインだけど、
1.3.1では改善されてる?
誰かしらない?


190 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 10:26:14 ]
>>185
いや同じにもできるし、プラットフォームに合せて変えることもできるということ



191 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 10:26:41 ]
>>185
いやならバイナリで作るでしょ
コンソールに出力したときだってプラットフォームによってエンコード変わっちゃうんだし

192 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 10:47:29 ]
>>186
やっぱC#はエレガントでいいなw

193 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 12:09:55 ]
むしろQtを使った場合 C++ と C# の違いがほとんど感じられない気がする

194 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 12:34:59 ]
C#なら.netのクラスを使える。これは非常に大きな違い。
あとWindowsじゃないとまともに動かない所とか。
Monoってどこまで.Netに追いついてたっけ?

195 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 12:38:48 ]
クロスプラットフォームのフレームワークを
わざわざMS固有の言語で使うなんて馬鹿

196 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 13:23:50 ]
>>193
LINQがあるじゃないか!!
・・・と思ったら2.0限定なのか

確かにQtでC++の面倒なところが隠蔽されるし
ライブラリも遜色ないんで、あんま変わんないかもね

>>194
gmcs限定ってところで、Windows云々は意味なしだね

> Monoってどこまで.Netに追いついてたっけ?
www.mono-project.com/CSharp_Compiler

俺も↑のサイトで見てついさっき知ったんだけど
monoってREPLが付属してるんだね
REPL目当てでWindowsに入れてもいいかもしれない

197 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 13:25:31 ]
ネイティブコードを吐かせてこそ意味がある

198 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 15:55:43 ]
iPhone向けMonoがネイティブを吐くんだよな
ただ、MacOS必要なのとツールが優良なのがネック

199 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 17:07:06 ]
WMターゲットで開発するときって結局VS付属のWM用コンパイラが必要なんだよね?

200 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 18:32:45 ]
CeGCC が使える
Qt for Windows CE がCeGCCでコンパイルできるかは知らないが



201 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:06:25 ]
>>196
REPL目当てならipython+PyQtって手もある
Pythonxyが全部まとめて入ってておすすめ

202 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:09:48 ]
C++で分割ソースをコンパイルするときは、まず各.cppファイルをコンパイルしてオブジェクトファイルを生成し、
できたオブジェクトファイルを最後にリンケージするという手順が必要なわけだけど、それをQtを使って
プログラミングするとなるとその手順はどうなるの?

203 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:11:39 ]
qmakeがMakefileを自動生成するから
そこら辺はあまり気にしなくていい

204 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:15:44 ]
はじめてQtを入れて触り始めています。
Qt creatorの完成度が高くて驚きました。
ただビルドに時間がすごく掛かるんですが何か間違っているんでしょうか?
hello worldだけでビルドに数十秒もかかっています。
使っているのはWindowsのmingw32版です。

205 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:35:25 ]
>>202
同じ
というか Qt だと moc とか uic とかの手順も増える
しかし >>203 の言うとおりだから気にすんな

206 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:36:46 ]
>>204
PC のスペックくらい書け

207 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:00:27 ]
>>202
$ qmake -project
$ qmake
$ make
終わり

208 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:03:39 ]
まぁしかし
なんでもおまかせでうまくいくのは最初のうちだけなんだよな

209 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:17:42 ]
>>206
ごめんなさい。Core 2 Duo P8800 + Windows 7です。

210 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:33:12 ]
Qtの初回ビルドは時間かかるね
普段のビルド(ソースファイル2〜3個修正したとか、UIだけいじったとか)ならすぐ終わるんじゃない?



211 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:33:44 ]
ちょっとお聞きしたいのですが
qtやるならc++から勉強したほうがよいですか?
それともqtプログラミングの本かって触りながらやってもいける感じでしょうか
fortran畑なのですがguiプログラミングやる必要がでてきていろいろ探しているのですが
すいませんがよろしくお願いします

212 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:34:11 ]
書いてるコードの種類にも寄るような気はするが
xtal をコンパイルboost呼び出しお茶を飲むような系統なら
時間はかかっても不思議でないし・・・

213 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:37:23 ]
>hello worldだけでビルドに数十秒もかかっています。

ごめんよく読んでなかったわorz

214 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:41:23 ]
>>211
zetcode.com/

ここ見ながら自分に合いそうなわかりやすそうだと
思うのから探してみるとか・・・

215 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:42:28 ]
>>211
QtCreatorインストールしてチュートリアルとかのソース見て
分かれば勉強する必要ないんじゃない?
ちなみにおいらは「ロベールのC++教室」でC++から勉強中

216 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:43:34 ]
>>207
> $ qmake -project
> $ qmake
> $ make
> 終わり

頑張ればこれも一つにまとめられそうなのになぜか公式はそうしなかった

217 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:51:28 ]
>>211
FortranからならQtを使うのにC++の勉強は絶対必要だと思うよ。
クラスの概念とか、ポインタとか参照とか...いろいろ知らないと難しい。
Qtの参考書だけでは済まない。
これはwxWidgetsだろうがC++ Builderだろうが同じこと。

実行速度とか余り関係なくて簡単に余り凝ってないGUIプログラムを作ってみる
のなら、Python+EasyGuiあたりから始めてみたら?

218 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:56:26 ]
一年ぶりにうpでーとしたら、QPainterあたりの実装が変わって
気軽にドット打てなくなってたorz
drawPoint()では1x1サイズのドットしか描けね。泣けた。
代わりにfillRect()使うことにしたがマンドクセ('A`)

219 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:00:09 ]
いや、チュートリアルだけでも結構行ける
とりあえずやってみれば?
言語でわかんないところが出てきたら
その都度ググればいいだけのこと

220 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:09:49 ]
>>209
プリコンパイルド・ヘッダー使ってみたら?

つttp://qt.nokia.com/doc/4.6/qmake-precompiledheaders.html

VCでnmakeじゃないと使えない風に読めるけど、実際にはjomでも大丈夫だし、
コンパイラをMinGW gccにしてmingw32-makeでも大丈夫だったよ。



221 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:12:17 ]
>>219
甘いんじゃない?
ググってばかりでなかなか先に進まず、そのうちイヤになってくる可能性大。

222 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:19:27 ]
QStringとかは重要なクラスなので、暗黙的に#includeしてくれるっぽいですね
他にどんなクラスが、暗黙的な#includeをされているんですか?

223 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:26:00 ]
QtCoreのなかのモジュール。QStringもそう。

224 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:29:51 ]
>>214,215,217
ありがとうございます。とりあえずインストールして触ってみます
土日に紹介していただいた本も立ち読みしてみます
c++ってメジャーっぽいので覚えておいて損もなさそうなので、
これを機会に勉強してみようとも思います
ありがとうございました

225 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:32:26 ]
>>211
www.harukaze.net/~haruka/wxpython/index.html

数値計算畑だと wx 系のほうが手取り早いと
思うんだが何で c++ で組みたいの?という疑問も

226 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:34:01 ]
>>214

zetcode.com/tutorials/qt4tutorial/utilityclasses/

コンソールアプリもQtのライブラリ使うとこんなに簡単になるんだな。
ちょっとしたC++のプログラムを書く際もQtを積極的に活用した方がいいんじゃね?

227 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:37:29 ]
内部で速度が要求される部分 C++
ガワの部分は python , ruby などで

みたいのほうがメンテは楽だと思うぞ
適材適所使い分けりゃいいのよ… C++ +α

228 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:40:50 ]
>>216
proファイルはあとから手書きで書き換えるから
qmake -project と qmake がくっついてると困るわ

229 名前:222 mailto:sage [2010/02/11(木) 23:48:23 ]
>>223
Qt creatorでプロジェクトを作る時に、どれをインポートするかって質問されるじゃん
あれでチェックすると暗黙的に#includeしてくれるの
それとも、Qt Coreだけなの?

230 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 00:00:16 ]
もちろんカリカリに組んだらC++よりCが速くなる可能性はあるが
メモリ潤沢という前提ならC++の方が速いものができることが多いな



231 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 00:02:21 ]
>>C++よりCが速くなる
例えばどんなコードで?

232 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 00:13:30 ]
kagamikohime.blog118.fc2.com/blog-entry-1353.html
d.hatena.ne.jp/ousttrue/20091204/1259888475

pyqt と wxpython で作られた mmdモデルビューワ
内部実装はC++の事例

というかゲーム畑とか物理演算とかはやっぱりC++で組まれることは多いやね・・・過去の資産もあるし

233 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 00:29:16 ]
>>232
>pythonにしたおかげでOpenGL部分はわりとさくさくだが、SJISとUTF-8の混在が面倒くさいことに。
慣れてないとこうなる例

234 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 00:30:19 ]
>>216
俺は別ファイルに追記する分を書いて、シェルスクリプトでproファイルとくっつけてmakeまでやらせてる。

235 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 00:31:45 ]
>>232
www.nicovideo.jp/watch/sm9127380

236 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 00:43:29 ]
>>235
>使用言語:C++(DXライブラリ)

よしDXライブラリだ!
ホビーユースでも C++ は利用され(ry

237 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 00:44:46 ]
CよりC++の方が遅いというほうこそ理解できん。
どちらだってポインタ使えるわけだし。

238 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 00:45:38 ]
>>237
クラス作るとCと比較したときに色々と見えない処理が入るからじゃ?

239 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 00:47:47 ]
ライブラリのリンクは C の方が速いと思われ
プロセスの起動も C の方が速いと思われ

240 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 01:00:35 ]
アホは無理してレスしなくていいと思われ



241 名前:sage [2010/02/12(金) 01:09:37 ]
QActionにicon入れるとメモリリーク起こすんだけど。

242 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 01:43:15 ]
C++は最悪C言語の95%程度のロスに抑えるように設計されている


ってドエライ人が言ってた

243 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 01:54:43 ]
>>237
ある処理を、C++の機能を使って「エレガントに」実装した時の実行速度と、
Cでカリカリ実装した時の実行速度の、一般的な違いのことだと思うよ。
同じように書いたものには勿論そんな違いは無いし、一つ一つ見ていけばqsortとsortみたいな
逆になりうる例もあるし、とりあえずそんな厳密な優劣の話ってわけではない、はず。

244 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 02:12:44 ]
>>220
ありがとうございます。
プリコンパイルヘッダー、gccでも使えるんですね。
あとで試してみます。

245 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 02:20:03 ]
vcのコンパイラだと何も設定しなくても速いな

246 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 03:33:24 ]
Qt Creatorの拡張がしたいけど
どうやればいいんだろう?

247 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 03:47:36 ]
「入門Qt4プログラミング」に書いてある

248 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 06:38:55 ]
       ∧∧   コイヤァァァァ!!
       (д´* )
       (⊃⌒*⌒⊂)
        /__ノωヽ__)

249 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 07:56:34 ]
              __j、               ___
   _人_ _   __く>ー} i⌒'⌒jム、        ´      `丶
 ̄ `Y´   ≦(⌒o くcぅ ~  r'r‐(_,.ィ   ./::/::.::.::.::.::.::.::.\::.::.\  ういはるー ういはるー
    |    >ィ(.人ノ7:.:.:.}个ー'r ゚ 、)ム  /::/::.::.:/:|::.::.::.::.::.::ヽ::.::.:ヽ
    十 工ア(ノ)′/....../...|.. ヽ`弋人く  '::.:|i::.i::.j| |::.ヽ :|i:.::.::|::(V゙ハ
        V:/:.:./:斗{=ミ/}i_ハ__ハ小:.i:ムr‐f’. i::.::|i::.ト八|\j斗\::|::(ノ{):|   ういはるー ういはるー
      //{:.:.:|!/、__ミ′  厂`ト}.:i|:.:.},、》. |::.::|iY-=o=-    .|:.::j|::.::|
   i     }小 :::}7 (゚) .. (゚) T:.:..ハ:{.  |:.:リハ    -=o=- .|/)::│
 _ 人 _ ノ/:.∧{^         リ:./:. :.′. ∨|::.::   __   .,_ イ::.::.|
  `Y´ |フ´ヘ.__i  'ー=三=-'  '^}:/{:.ト{    | i人  | .::::/.| /::.::|::.::.:|
   l  l     八          '_人{.    |::∨ :.:.しw/ノイ::/::.i|::.::.:|
  ―― ――'フ.:\      .イ´         /⌒ ∪  | ⌒\:.:|
.     |    ⌒/{ノ> --、<:从_      / 人  }  | ノ゙\ \ ズチュ
            `ーァ      . ̄ニ────ー-v′ ノ/ / /   
             / 、 '''  .  ;;   :::  . ;;;   く   ⊆/
              {   |              ;;;       \  ) ) )
             |   {    r、 ;;; ::: . ;; .  .        | ノ   
            ,ノ   〉   { `ー────ァ―‐r‐   ,ヽ )   ズチュ
            (    (   ノ        {   {   r′l /     
             `ー= `ー='        (⌒ (⌒  )ノ   )

250 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 16:01:14 ]
Qtで作成したソフトにヘルプ機能を持たせようとしてるんですが,ToolTipやWhatsThisでは機能不足
だし,かと言ってQtの本格的なヘルプシステムでやろうとするとQt Assistantをカスタマイズしたり
起動させたりしなければならず大袈裟なので,HTMLでヘルプを作っておいて,ブラウザに表示させる
ことを考えています。

Windowsだけなら,WIN32 APIのShellExecute()を使って.htmlファイルの関連付け起動をさせれば
可能なのはわかっていますが,これと同じようなことをQtの世界の中でやる方法があったら教えて
ください。要するに,Qtで"なんたら.html"を指定してブラウザを起動して表示させる方法があれば
知りたいのです。

ちなみにLinux等他のプラットフォームのことは殆ど知りませんが,Windows上で作ったQtの
プログラムのソースをできるだけそのままで他のプラットフォームでも動かせるようにしておきたい
ということなんです。

よろしくお願いします。



251 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 16:13:10 ]
>>250
Assistant をカスタマイズしなくても Qt Help モジュールが使えるはず。
qt.nokia.com/doc/4.6/qthelp.html
qt.nokia.com/doc/4.6/qthelp-framework.html

htmlのオープンには QDesktopServices::openUrl() を使えばいい。
urlだけの調整で他のプラットフォームでも使える。

252 名前:250 mailto:sage [2010/02/12(金) 16:49:33 ]
>>251

> htmlのオープンには QDesktopServices::openUrl() を使えばいい。
> urlだけの調整で他のプラットフォームでも使える。

ちょっと試してみましたが,起動に時間が掛かるものの,簡単ですね。
とりあえずはこれで行けそうです。


> Assistant をカスタマイズしなくても Qt Help モジュールが使えるはず。
> qt.nokia.com/doc/4.6/qthelp.html
> qt.nokia.com/doc/4.6/qthelp-framework.html

こっちはちょっと手順を踏まないといけないようなので,後で試してみます。
いずれにしろ先ずはhtmlの作成ですね。

素早いご回答ありがとうございました。

253 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 17:16:05 ]
>>252
QtWebKit を使って html を表示する方法もあるよ。

254 名前:250 mailto:sage [2010/02/12(金) 17:46:47 ]
>>253

> QtWebKit を使って html を表示する方法もあるよ。

早速テストプログラム作ってやってみました。簡単で結構速いですね。
これで出来そうです。

ありがとうございました。

255 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 21:42:29 ]
QApplicationにコマンドライン引数を渡していますが、
デフォルトではどのような処理がなされているのでしょうか?

256 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 21:52:57 ]
applicationDirPath()、applicationFilePath()、applicationName()の元に使ったり、
当然arguments()で取得できるQStringListに格納するのに使ってるんジャマイカ?

257 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 22:01:54 ]
>>255
せっかく読みやすいドキュメントがあるんだから気になったら読もうぜ。
ttp://doc.trolltech.com/4.6/qapplication.html#QApplication
>>256の動作に加えて、QtのGUIスタイルとデバッグに関する引数を自動で処理してくれるみたいだな。

258 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 22:03:19 ]
>>256-257
thx

259 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 22:59:43 ]
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());と
tr()を使うのはどちらが賢明な判断なのでしょうか?

260 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 23:06:28 ]
QTextCodec::setCodecForCStrings()はQStringが入力として受け付ける(const)char*の文字コード。
QTextCodec::setCodecForTr()はtrが(ry



261 名前:26 mailto:sage [2010/02/12(金) 23:46:34 ]
俺はQString::fromUtf8();

262 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 00:17:49 ]
前出のandroid-lighthouse試した奴いる?

263 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 01:11:29 ]
>>259
それぞれ別の処理だから両方必要

264 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 01:12:19 ]
>>260
入力のときだけじゃないから注意

265 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 01:20:31 ]
qtcreatorでコンソールプロジェクトを実行した時に
プログラムを手動で終了させてるんですけど、
処理が終わったら終了できるようにできませんか?


266 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 01:59:23 ]
>>265
処理が終わったら QCoreApplication::quit() を呼び出せばいい。
イベントループが不要ならそもそも QCoreApplication::exec() を呼ばなければいい。

267 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 02:13:32 ]
>>264
入力の時だけじゃないだと・・・
他にいつこれ絡むの?
入ってくる文字コードこれだぞーって教えてるだけじゃないの?

268 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 02:18:49 ]
え?

269 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 02:24:40 ]
>>265-266
QCoreApplication app(argc, argv);
コンソールのみ使用するプログラム
app.quit();
return app.exec();

この順番でOK

270 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 02:25:43 ]
>>267
toAscii() とか



271 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 02:40:03 ]
>>268 >>270
Qt使い始めた頃に必死こいて得た知識を信じきった結果がこれだよ!
言われてからドキュメントTextCodec::setCodecForCStringsの項を見たら
convert to and fromとか書いてあるから泣きたくなった。
指摘さんくす

272 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 03:54:24 ]
>>259 >>271

>>3 とかみると
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));
だったり
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("sjis"));
だったりって決め打ちで書かれてるケースが多いんだよね(これは良くないと思う)

QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
にして環境非依存にしておく方がスマートだと思う

273 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 04:04:54 ]
どっちもソースを UTF-8 で保存しているとして、

----------------(A)
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8")); // (1) 決め打ち
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); // ソースが utf-8 なのでここは決め打ち OK
を書いて
QString hoge("日本語"); // ソースのエンコードで埋め込まれた CString が (1) を基準に変換される
qDebug("%s", qPrintable(hoge)); // 環境によって化ける
----------------

----------------(B)
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); // 環境に適応
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); // (2) ソースが utf-8 なのでここは決め打ち OK
を書いて
QString hoge(QObject::tr("日本語")); // ソースのエンコードで埋め込まれた tr が (2) を基準に変換される
qDebug("%s", qPrintable(hoge)); // 環境が変わっても化けない
----------------

(A) ***でも結果的に動く*** けれども (B) の方が望ましいと解釈してるんだけどどう?

274 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 04:22:02 ]
違うか
qDebug() は例が悪かった
忘れてくれ orz
とりあえず「ソースのエンコード」と「実行時のエンコード」の
ポータビリティを両立させようとしたら (B) の方が望ましいのでは? と思った

入力を考えると

QString hoge("日本語"); // (1) が使用されている
QString hoge(QObject::tr("日本語")); // (2) が使用されている

これはいいとして

出力を考えると

qDebug("%s", hoge.toUtf8().constData()); // 問題なし
std::cout << hoge.toLocal8Bit().constData(); // 問題なし
std::cout << hoge.toAscii().constData(); // (1) が使用されている
std::cout << hoge.toStdString(); // (1) が使用されている
std::cout << qPrintable(hoge); // (1) が使用されている?

かな

275 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 08:14:22 ]
>>269
QCoreApplication::quitはQCore(ry::execを呼び出した後じゃないと
効果が無いんじゃないかな?
だからQTimer::singleShot(0, &app, SLOT( quit() ));を使って
タイマーイベントで駆動する小細工が必要になる
ってのを見たんだけど[1]

#include <QCoreApplication>
#include <QTimer>

int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
QTimer::singleShot(0, &app, SLOT( quit() )); // app.quit();
return app.exec();
}

[1]
Qt-interest Archive - QCoreApplication won't quit

lists.trolltech.com/qt-interest/2008-02/thread00916-0.html

276 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 11:02:00 ]
>>274

>>176

出力はQTextStreamだろ常考

277 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 11:07:10 ]
Windows版のQt Creatorはキーの反応悪くて使いにくい。なんで皆文句言わないんだろう
ってずっと思ってたんだけど、無変換キーを押すと次のキー入力が無視されることに気づいた
変換−無変換でIME切り替えてるから困るなあ

278 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 11:24:08 ]
>>275
おお、寝てる間に小人さんが・・・
THX !!!

最後の結論はこっちになってますね
> #include <QtCore>
> #include "myclass.h"
>
> int main(int argc, char *argv[])
> {
> QCoreApplication qapp(argc, argv);
> MyClass *class = new MyClass(0);
> QObject::connect( class, SIGNAL( done() ), &qapp, SLOT( quit() )
);
> class->doSomething(); // Emits done, when finished
> return qapp.exec();
> }

You just need to add Qt::QueuedConnection as an additional argument to
the connect() call.
doc.trolltech.com/4.3/qt.html#ConnectionType-enum


279 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 11:26:48 ]
>>277
ソースに日本語は使わずに国際化リソースで対応しよう


280 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 11:42:42 ]
>>279
なるほ・・・ど?いやでも日本語でコメント書きたいよw



281 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 11:56:24 ]
俺は外部エディタ登録して使ってる。
でもQt Creatorのエディタは日本語入力以外そんなに悪くないと思う。
折り畳み機能は邪魔なのでOFFにしてるけど。
最初、「わ、関数の中身が全部消えた」とか勘違いしたw

カッコや""の自動補完も最初は余計なお世話だと感じたけど、
慣れるとそうでもないね。

282 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 12:52:07 ]
あーごめん>>277はQtCreatorがダメみたいに書いちゃったが
無変換キーのせいでダメだと思ってただけで、他は問題ないんだ
まあ外部エディタでいいんだけど、自動補完がよくできてるからもったいないなと

283 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 12:55:53 ]
>>278
それでも
void MyClass::doSometiong() { done(); }
って定義したら、やっぱり終了しないみたいだから
QCoreApplication::exec()より後で呼び出されることを保障する手段としては
タイマーイベントを使うのが一番簡単なんじゃないかと思う
execした直後に自動で呼び出されるsignalがあればそれを繋げばいいんだけどさ
リファレンス見る限りそんなものは無いようなんで困ったもんだなぁと

284 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 14:03:55 ]
そもそもなんのためにexec()呼び出すん?

285 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 14:51:13 ]
コマンドの実行本体の流れ自体はコンソールで充分なんだけど
エラーのときだけメッセージボックス出したいとか


やってみたら
QWindow だけ作って メッセージボックスにハンドル渡して
app.exec() 呼ばなくてもちゃんと動いたわ w

286 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 14:54:53 ]
>>283
>void MyClass::doSometiong() { done(); }

Q_OBJECT 書いてる?

287 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 14:56:22 ]
>>286
書いてるよー
じゃないとmocに怒られるし

288 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 15:04:21 ]
moc って qmake 実行し直しだよね

289 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 15:07:02 ]
void MyClass::doSomething(){ emit done(); }

290 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 15:33:54 ]
>>220
試してみたところWindowsのMingw環境でもプリコンパイルドヘッダーが使えました。
debugディレクトリ以下にstable.h.gchというディレクトリができていたので
ちゃんと機能しているようです。
コンパイル速度の変化は正確にはわからないですが、
もっとたくさんヘッダファイルを使う場合には差が出るのではと思います。



291 名前:283 mailto:sage [2010/02/13(土) 16:01:02 ]
こんな感じです
www.dotup.org/uploda/www.dotup.org650392.zip.html
トレースしてみましたが明らかにexec()より先にdone() -> quit()が呼ばれてます

292 名前:220 mailto:sage [2010/02/13(土) 21:38:02 ]
>>290
俺はVCだけど。プリコンパイルドヘッダー使ったら、コンパイルが劇的に速くなった。
QApplicationとQtGuiをプリコンパイルの対象にしたから、殆どすべてのヘッダーが
プリコンパイルされて巨大なファイルが出来上がったけどねw

それよりデバッガーの遅さが気になる。VCだからcdbなんだけど、デバッグ起動して
ブレークで止まってから、ローカル変数が表示されるまでかなり時間が掛かる
(「ダンパーを初期化しています」とか表示されてから10秒以上あるかな)。

あんまりほめられたことじゃないけど、カットアンドトライ的にソースをホイホイ
書き換えてはデバッガーで動かしてテストしてみるのはちょっと苦痛。


293 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:39:46 ]
>>283
MyClass cls;
QObject::connect(&cls, SIGNAL(done()), &app, SLOT(quit()), Qt::QueuedConnection);
cls.doSomething();
return app.exec();

と Qt::QueuedConnection を付けて呼ぶと

>QCoreApplication::exec()より後で呼び出されることを保障する手段としては

が満たされるようですね

>>286 >>289
できました
emit は書いてなくても動くみたいです
ありがとうございました

294 名前:デフォルトの名無しさん [2010/02/13(土) 21:54:49 ]
>>282

> まあ外部エディタでいいんだけど、自動補完がよくできてるからもったいないなと

うん。だから場面によって使い分けてる。マークジャンプとか、アウトライン機能
(見出し機能)で関数一覧を表示させといて一発ジャンプとか、使い慣れたエディタの
方が良いこともあるから。

295 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 01:29:16 ]
>>269 >>285 >>293
わざわざ MyClass 作らなくてもこれでも終われるね (connect の行がないと終わらない)

QApplication app(argc, argv);
QMainWindow *window = new QMainWindow();
window->setAttribute(Qt::WA_DeleteOnClose);
コンソールのみ使用するプログラム
QMessageBox::about(window, QObject::trUtf8("テスト"), QObject::trUtf8("!!"));
QObject::connect(window, SIGNAL(destroyed()), &app, SLOT(quit()));
window->close();
return app.exec();



296 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 01:58:36 ]
いや、GUI作らない場合の話をしてるんだから、
QApplication app(argc, argv);
じゃなくて、
QCoreApplication app(argc, argv);
でないと反則。

っつーかそもそも、>>284さんの指摘にもあるが、
app.exec();
を呼ぶ動機が微妙。
ひょっとしてネットワークとかタイマーとか、
どっかでイベントループ回す必要がある、
ってことなら判らんでもないが。

297 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 02:46:20 ]
qdbusではapp.exec()呼び出してないね。
cep.xor.aps.anl.gov/software/qt4-x11-4.2.2-browser/dc/d8a/qdbus_8cpp-source.html

298 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 14:28:49 ]
シグナルとスロットで引数がある場合、どちらも同じ値が入ってくるのですか?

299 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:12:53 ]
>>298
emitしたシグナルの引数が、スロットに渡される。
スロットの受け取る引数の数が少ないときは、後ろの引数は削られる。
スロットの受けとるのが多い場合は(どうなるか忘れたが)うまくいかない

signal valueChanged(int)とslot setValue(int)をconnectしたら、
例えばvalueChanged(3)がemitされたとき、setValue(3)が呼び出される。

signal valueChanged(int)とslot update()をconnectしたら、
例えばvalueChanged(3)がemitされたとき、signalの引数が1つに対してslotは引数を取らないので削られて、
update()が呼び出される。

300 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:39:44 ]
>>299
ありがとうございます



301 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 19:32:53 ]
Qt Creatorで「void Hoge::Hoge() F1」みたいなポップアップでてくるじゃん
あれってどこで消すのよ?

302 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 20:05:36 ]
ESCキー

303 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 20:49:49 ]
Qt CreatorをFreeBSDにインストールしたいんだけどpackageで提供されていたっけ?

304 名前:デフォルトの名無しさん [2010/02/14(日) 22:38:57 ]
>>303
あるよ
devel/qtcreator
だったかな

305 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 01:30:11 ]
>>304
thx

それ入れればたぶん依存でQt本体も勝手にインストールされるよね(´・ω・`)?

306 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 05:54:11 ]
QNetworkAccessManagerが送信するリクエストヘッダフィールドの順番って変えられないんでしょうか?
それとヘッダに強制的に追加される不要な項目を消すことはできますか?
リクエストだけ直に書ければ助かるんですけど・・・

307 名前:デフォルトの名無しさん [2010/02/15(月) 09:13:00 ]
>>305
もちろんですとも

308 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 10:53:03 ]
>>306
QNetworkRequestで出来る操作だけで不満ならQTcpSocket使ってはいかがか。

309 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 16:45:19 ]
去年のイベントのビデオとpdfが出てる。
ttp://qt.nokia.com/resources-jp/Japanese_elearning/qt-conference-tokyo-2009-videos


310 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 17:08:40 ]
>>306
ヘッダーはユーザが追加した順番になるはず。

自動的に追加されるヘッダーは送出の直前で追加されるので削除は無理っぽい。
空かどうかをチェックして追加しているので自前のものに置き換えることは可能。



311 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 21:36:17 ]
meego.com/
moblin と maemo をマージした Linux & Qt ベースの
mobile向けディストリビューションらしい。

312 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 23:07:50 ]
Qt 4.6.2

313 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 23:20:24 ]
QtCreatorでFramework Onlyの方の全てのプラットフォームいけます?

314 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 23:27:04 ]
Qt 4.6.1入れたばかりだぞ、ゴラァ

315 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 23:30:08 ]
一ヶ月弱でバージョンアップかよw

316 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 23:33:08 ]
4.6だったか4.6.1だったかをこの前入れたばかりですが・・・

317 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 23:33:13 ]
入れ替えるのそんなにめんどくないからいいじゃん。
何なら鍼灸療法入れといたって医院だし。

318 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 02:09:43 ]
4.6.1入れたばっかなのに4.6.2入れるのマンドクセ

319 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 11:43:58 ]
メインウインドウはどうやって作っていますか?
やっぱり、手書きか

320 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 11:46:37 ]
designerで作ってる。



321 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 20:57:05 ]
臨機応変に

322 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 21:18:14 ]
Windows版のQtCreatorってどうやってバージョンアップしてる?
一度クリーンアンインストールしてから再度インストールしなおす?

323 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 21:30:39 ]
すいませんQtの質問ではないと思いますが
ダイアログ1のデータをダイアログ2で使いたいんですが、うまく行きません。
class Dialog : public QDialog{
Q_OBJECT
public:
Dialog2(QWidget *parent = 0);
Dialog2(QWidget *parent, Dialog1 *dlg1);
として
Mainwindowで
Dialog2 *m_dlg2 = new Dialog2(0, &m_dlg1);
とすれば、動くんですが、m_dlg2をメンバー変数にしようと思いMainwindow.hで
Dialog1 m_dlg1;
Dialog2 m_dlg2(QWidget *parent=0, Dialog1* &m_dlg1);
としてみたんですが
default argument missing for parameter 2 of 'Dialog2 Mainwindow::m_dlg2(QWidget*, Dialog1*&)'
とのエラーになってしまいます。
どうすれば、できるでしょうか


324 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 21:45:37 ]
test.proにQT += webkitが書いていないと、コンパイラに怒られるんですが
何してんですか?これ

325 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 21:52:29 ]
>Dialog2 m_dlg2(QWidget *parent=0, Dialog1* &m_dlg1);
>としてみたんですが
>default argument missing for parameter 2 of 'Dialog2 Mainwindow::m_dlg2(QWidget*, Dialog1*&)'
>とのエラーになってしまいます。

Dialog2 m_dlg2(QWidget *parent=0, Dialog1*m_dlg1=0);


326 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 21:53:01 ]
>>322
普通に旧版アンインストールしてから新しいのインストールすれば問題ないよ。

設定は自分のプロファイルフォルダの下(C:\Documents and Settings\(ユーザー名)
\Application Data\Nokia)に保存されてるから、消される心配しなくて大丈夫。


327 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 21:53:20 ]
>>324
ソースの方で webkit 使ってるんだろ

328 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 22:03:10 ]
というか何が変わったん4.6.2...

329 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 22:03:53 ]
>>324

つ ttp://qt.nokia.com/doc/4.6/qmake-variable-reference.html

QT は使用するモジュール(ライブラリ)の指定。>>327の言うとおり、QtWebKit使ってるから
だと思われ。

330 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 22:17:30 ]
>>328
ttp://qt.gitorious.org/qt/qt/blobs/4.6/dist/changes-4.6.2




331 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 22:21:23 ]
>>297
そうなんだ
「入門Qt4プログラミング」の FTP / HTTP だと
exec() でイベントループ回さないといけないと書いてあった

332 名前:324 mailto:sage [2010/02/16(火) 22:30:18 ]
>>327,329
ひとまず、qmakeの勉強をしてみることにします

333 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 22:35:03 ]
qt creatorでMainWindowを作っているわけなですが、
メニュバーは自分でシコシコ手書きするしかないんですか?

334 名前:デフォルトの名無しさん [2010/02/16(火) 22:45:44 ]
>>333
ウィンドウの左上に「ここに入力」って書かれてるところをクリックして、&File とでも
入力してごらんよ。

コンテキストメニュー(ポップアップメニュー)は手書きするしかないけど。


335 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 22:47:09 ]
↑ごめん。ダブルクリックだった。

336 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 22:50:24 ]
>>326
ありがとう。
それならバージョンアップも楽だね('A` )b

337 名前:333 mailto:sage [2010/02/16(火) 22:55:30 ]
>>334
最後にエンター押さなきゃ行けないんですね、
Visual Studioだとエンターを押さなくてもよかった(俺の記憶では)ので気がつかなかった

ありがとう

338 名前:323 mailto:sage [2010/02/16(火) 22:57:56 ]
>>325
ありがとうございました。
Dialog2 m_dlg2(QWidget *parent=0, Dialog1*pdlg1=&m_dlg1);
としたら、今度は
SO C++ forbids taking the address of a bound member function to form a pointer to member function
と怒られました。
ISO C++では、インスタンスのメンバ関数のアドレスを、メンバ関数へのポインタを作るために取得することは禁じらています。
結局、この方法はペケなんですかね



339 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 23:16:41 ]
>>338
Dialog1 *m_dlg1;
Dialog2 *m_dlg2;
とポインタでクラスメンバを宣言して、
コンストラクタの初期部で
m_dlg1(new Dialog1), m_dlg2(new Dialg2(0, m_dlg1))
とでもすれば。
親を 0 にするならデストラクタで delete を呼ぶ必要があるけど。

340 名前:デフォルトの名無しさん [2010/02/17(水) 00:50:34 ]
>ダイアログ1のデータをダイアログ2で使いたいんですが、うまく行きません。
シグナルるでスロットにデータを渡す



341 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 01:28:14 ]
Mingwをmsysでも使うからupdateはマンドクセ
1. 旧Qtアンインストール
2. 新Qtインストール
3. システムの詳細なプロパティで変数pathにQtを加える。
4. c:/msys/1.0/etc/fstabにmingw32の場所を教える。
makeするのマンドクセ

342 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 13:50:31 ]
makeしなくてもmsysとQtで別々にMinGWがある状態でやってればいいんじゃ?
共存できないのかな

343 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 14:14:46 ]
できる

344 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:20:08 ]
qt4.6.2はバグフィックス集みたいだから
余計な苦労したくなければ入れておく方がよさげだね

345 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 00:21:55 ]
QtCreatorってVCみたいなドッキングウィンドウにならないのかなぁ・・・

346 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 00:22:52 ]
なるよ

347 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 20:22:21 ]
qtってSIGNALとSLOTがあるから例外を投げてこないのかな〜

348 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:18:41 ]
とあるソフトではQApplicationを継承したクラスに、
public + staticなメンバ変数を宣言していました

お前らは、QApplicationをどんな感じで使ってますか?

349 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:13:08 ]
「入門Qt4プログラミング」誤字脱字多すぎね?
ソースにまでバグがあるw

350 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:30:39 ]
>>346
Designerの方はなるんだね
プラグイン追加すればいいのかな?
でも自動的に開いたり閉じたりはしないよね?



351 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:04:30 ]
>>348
そのまま使ってる。

352 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 03:28:11 ]
QCoreApplication でコンソールアプリ書けるのは判ったけど
Windows 用の DLL って Qt ではどうやって作るの?


353 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 03:36:33 ]
コンパイラの成果物がDLLなのかEXEなのかと
Qt使ってるかどうかは関係ないよ。


354 名前:デフォルトの名無しさん [2010/02/19(金) 06:51:59 ]
>>352
qmake の .pro で、TEMPLATE = lib


355 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 06:59:42 ]
>>353-354
ありがとうございます
Win32API とかだと DLLMain を書かないといけなかったりするのは
Qt だとどう書くのかなと思ったのです

356 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 07:48:19 ]
その辺りも含めてやってくれる。
同じソースから、*NIXならlibXXX.soが、WindowsならXXX.dllが作られる。

357 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 11:42:20 ]
ダイアログベースでWindowsのイベントを自分で処理している
レガシーなアプリケーションの改修を任されたのですが、
新規に追加するダイアログだけ Qt を使うことは可能ですか?

358 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 18:54:13 ]
QHttp 使って 2ch に書き込みしたいんだけど
cookie とか session 用のメソッドが全然見つからない
このあたりのを自分で作らないとだめなのかな

359 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 20:02:35 ]
QNetworkCookie

360 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 21:09:28 ]
FreeBSDにパッケージからQtCreatorをインストール。
無事起動までこぎつけたけどなぜかコンパイルの段階になって
「Qtの本体が無いよ」と言われてコンパイルできず。

あるぇ〜?
言われてみれば qmake とコマンドラインで打ち込んでも認識されないな・・・
パスがきちんと通ってないのかな?



361 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 21:14:15 ]
ここはお前の日記帳じゃ(rt

362 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 21:47:14 ]
>259
thx!!

363 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:00:15 ]
>>362
アンカを間違えてるがな( ^ω^)

364 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 01:12:12 ]
Mac Portsからqt4インストールして出来たqtdemoを起動すると
いつの間にやらまっしろなウィンドウしか表示されなくなってしまったんだけど、他に同じ症状の人いないかな?
ビルド&起動環境は64bitカーネル、64bit版のqt
発生するバージョンはここ最近の5バージョンぐらい?



365 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 02:45:31 ]
>>364
10.6 で qt4-mac @4.6.2 の qtdemo-mac (コマンドライン) と
/Applications/MacPorts/Qt/qtdemo.app を起動してみたけど,どっちも問題ないです.
ビルドはデフォルトのまま 64bit でしてるけど, MacBook なのでカーネルは32bit.

366 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 09:47:44 ]
>>359
QNetwork を見ると QHttp とほとんど同じメソッドっぽいんですが
QNetwork の方が高機能で QHttp は obsolete ってことですか?

367 名前:デフォルトの名無しさん [2010/02/20(土) 11:47:45 ]
>>366
そうです。
doc.trolltech.com/4.6/obsoleteclasses.html

368 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 14:25:13 ]
FreeBSDにパッケージからQt4をインストールしたんだけど

> qmake -project

まではおkだけど、次の

> qmake

の段階になると「QMAKESPECが定義されてませんよ」と言われてエラーが返される。

たんにパッケージからインストールしただけじゃダメなの?
他にどんな設定をする必要がある?

369 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 14:58:55 ]
当然QMAKESPECについてググってみたんだよな?

370 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 15:06:28 ]
ググったけど通販のページしか出てこない



371 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 15:30:15 ]
>>369
ログインするユーザー毎にQMAKESPECを設定しないといけないのかorz・・・
QMAKESPECに freebsd-g++ を指定したら > qmake が通るようになった。
でも同じシステム上だったら freebsd-g++ しか指定しないのは分かり切ったことなんだから
Qt本体の方で freebsd-g++ と指定してくれてもいいのにね(´・ω・`)

ところで
> qmake -project
> qmake
とまで通るようになったけど次の
> make
でエラーが返される。なんでも「QApplicationなんてファイルやフォルダはありませんよ」とか
「QLabelなんてファイルやフォルダなんてありませんよ」とか・・・

なんかがおかしいだろorz・・・

以前Troll-techからQtのソースを取ってきてFreeBSD上でシコシココンパイルしてからインストール
したときはこんな初歩的なトラブルでつまずいたりすることはなかった。
packageからインストールしたことで何か問題が起きているとしか思えん。

372 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 16:52:38 ]
濃厚なゆとり臭がする

373 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 17:12:24 ]
>366
thx!!


374 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 17:23:03 ]
obsolete なクラス(というかヘッダー)使ってたら
qmake 時か make 時に warning 吐いてくれてもよさそうなきがする

375 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 17:31:17 ]
>>372
インストールすべきものは全てインストールしたんだがな(´・ω・`)・・・

376 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:11:31 ]
>>372
ここのひとかもなぁ
pc12.2ch.net/test/read.cgi/unix/1262148963/446-

377 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:12:45 ]
>>371
おまい C は初めてか?力抜けよ

378 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:15:20 ]
>>371
FreeBSD の ports は充分テストされないでリリースされるのが常識

379 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:31:21 ]
エラーから想像するにincludeパスが通ってないとかかな

380 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 19:05:14 ]
本家からWindows用のSDKをダウソしてきてXPマシンにインストールしたんだが
ルートフォルダにinstall.iniだのinstall.res.1031.dllだのeula.1041.txtだのファイルを
てんこ盛り作ってくれやがった。

これらのファイルってインストールが終わったら削除してしまって構わないよな?

いずれにせよちょっとお行儀悪すぎないか?



381 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 19:43:09 ]
>379
そんなのは判り切ってるんです
packageから入れたのに自動でincludeパスの設定がされなかったことを問題にしてるんですよ!!

382 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 19:45:52 ]
>>380
うちはそんなもの作られなかった
ひょっとしてインストール先を
C:\Qt じゃなくて
C:\ にしたんじゃないの?

383 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 19:58:50 ]
>>382
いやインストール先をいじった覚えは無いんだが

384 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 20:16:07 ]
>>380
support.microsoft.com/kb/950683

385 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 20:26:08 ]
>>384 の要点
These files are unnecessary and can be safely deleted from the system.
これらのファイルは、不要であり、システムから安全に削除できます。
Its a known bug and is planned to be fixed in VS2008 SP1.
それは知られているバグです。そして、VS2008 SP1で修理されるために、計画されています。

>>381
FreeBSD に関する問題点の報告に時間を割いていただき、 どうもありがとうございます。

386 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 20:32:15 ]
>>379
includeはきちんとやってるよ。

#include <QtGui/QApplication>

ってな感じで。もちろん

#include <QApplication>

も試してみたがこれもダメだった。


387 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 21:18:35 ]
>>386
エラーから想像するにincludeパスが通ってないとかかな

388 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 21:55:56 ]
>>385
サンクス、消してくるノシ

389 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 21:59:03 ]
QLocalSocket
doc.trolltech.com/main-snapshot/qlocalsocket.html

このクラスの説明と実際にかかれているコードを読んだんだけど、
何をしているのかわからない
誰か教えてくれ

390 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 22:01:09 ]
>>389 さん、コップンカー(´∀`)



391 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 22:03:32 ]
Detailed Description

The QLocalSocket class provides a local socket.

On Windows this is a named pipe and on Unix this is a local domain socket.

If an error occurs, socketError() returns the type of error, and errorString() can be called to get a human readable description of what happened.

Although QLocalSocket is designed for use with an event loop, it's possible to use it without one.
In that case, you must use waitForConnected(), waitForReadyRead(), waitForBytesWritten(), and waitForDisconnected()
which blocks until the operation is complete or the timeout expires.

Note that this feature is not supported on versions of Windows earlier than Windows XP.

See also QLocalServer.

392 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 22:04:29 ]
>>389
プロセス間通信でぐぐれ

393 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 22:06:19 ]
>>387
同じソースをQtCreatorを通してビルド&実行すると問題なく通る。
コンソールからコマンド直打ちじゃmakeの段階でエラーが返ってくる。
どゆこと(・ω・)?

> qmake -project
> qmake
> make

で問題ないはずだよな?

394 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 22:14:38 ]
>>392
感謝

395 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 23:08:44 ]
今起きたことをありのまま言うぜ・・・

QtCreatorでプロジェクトファイルを読み込んでビルドしたら問題なく通った。
その後コマンドプロンプトで
> make
コマンドを打ったらこれも問題なく通った。

だが再度コマンドプロンプトで
> qmake -project
> qmake
> make
と打ち直してみたら最後の > make の段階で再びコンパイルエラーが出るようになった。

何を言ってるのか分からないかも知れないが俺もどういう事態に巻き込まれたのかよく分からない。
何か尋常じゃないことが起きていることだけは確かだ。。。

396 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 23:21:37 ]
qmake -projectで作り直したproファイルでQtCreatorからコンパイルできるか?
できなかったら、proファイルに不備がある。
できたとしたら、qmakeのオプションが怪しい

397 名前:デフォルトの名無しさん [2010/02/20(土) 23:24:46 ]
Qt CreatorでGUIのウインドウをつくるときって
一緒につくられるヘッダファイルやソースファイルに変更が反映されていくの?
それとも何かでコード出力しなきゃダメなの?

398 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 23:29:33 ]
>>396
> qmake -projectで作り直したproファイルでQtCreatorからコンパイルできるか?

うん、QtCreatorからそのproファイルを読み込んで「ビルド」を実行するとコンパイルできてしまう。

399 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 23:32:35 ]
>>380
それだ!!
うちのも何か eula.1041.txt とか10個くらい
作成されてた理由がわかったd 特に害もないから気にせず放置してたけどw

400 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 23:36:48 ]
>>384
恥。レスよく読めよじぶん乙orz



401 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 23:38:22 ]
>>398
Qt Creatorは各種の環境変数を内部で設定して、それを子プロセスに引き継いだ状態で
qmakeを起動するから、結局はコマンドラインでqmakeするときの環境変数の設定が
足りないんじゃないか?

Qt Crteatorの左端に縦に並んだアイコンの[プロジェクト]のページに、
[ビルド時の環境変数]という項目があるから、そこで[詳細を表示]ボタンを
押して確認してみたら?

俺はWindowsでやってるから外してるかもしれないが、基本は同じだと
思うので...


402 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 02:25:27 ]
っつーか本気で教えてもらおうという気が感じられないんだが
ふつう自分の環境変数とかここに貼るだろ


403 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 03:42:08 ]
ちょ、ちょっと待ってね
FreeBSDへのインストールが間違っているのかと思って
QtCreatorからQt4ライブラリと一式アンインストールしてきた。

再度インストールしなおそうと思うんだけどパッケージからインストールすべきか、
本家からソースコードをとってきて地道にコンパイルしてインストールすべきか迷う。。。

404 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 03:56:48 ]
FreeBSD > Compiling application with QT
www.cyberciti.biz/tips/freebsd-compiling-application-with-qt.html

405 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 05:39:55 ]
本家からソースコードをとってきて地道にコンパイルしてインストールすべき

406 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 11:53:27 ]
デバイス WindowsMobile6.1
ビルド wincewm60-msvc2005
QtCore4.dll QtGui4.dll msvcp80.dll msvcr80.dll exampleのanalogclock.exe
をデバイスのローカルフォルダにコピー

上記のことをやってみたんですが
analogclock.exeが起動するまでに7秒ほどかかります。
(デバイスのスペックによっても変わるでしょうが)
これはQtCore4.dllとQtGui4.dllを読み込むのに時間がかかっているということでしょうか?
短縮させる方法は無いでしょうか?

407 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 12:22:58 ]
WMを窓から投げ捨てる

408 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 12:43:46 ]
>>407
やっぱり無理ですか?
自分の知識不足だろうと思ったんですが・・
.netの起動より遅いんですよねorz

409 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 13:10:59 ]
staticにリンクしたらどうだ?

410 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 13:14:09 ]
自分もWindows上でQt + MinGWという環境で開発しているけど
それを外部で実行する際に必要なDLL一式って何を取りそろえばいいんだっけ?
一カ所にまとまっていたりしない?



411 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 13:29:48 ]
Dependency Walkerで調べて,binディレクトリから拾ってくればOK。

つ ttp://www.dependencywalker.com/

Qtのヘルプのどこかのページでも紹介してたと思った。

412 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 13:36:51 ]
QCoreApplicationならQtCore4.dll、QApplicationなら加えてQtGui4.dll
qmakeでQT変数に加えたdll(networkならQtNetwork4.dll)が必要。

後、実行時に動的に読まれるdllもあるから、直接の依存関係が無くても
plugins 以下も必要なdllがある。

413 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 13:54:30 ]
>>411-412
ありがとノシ
いずれQtの側でも作成したプログラムごとに必要なDLL一式をエクスポートしてくれる機能が実装されるといいね。

> QtCore4.dll
> QtGui4.dll

このdllファイルって

\Qt\2010.02\bin
\Qt\2010.02\qt\bin

の二カ所に同名で格納されてるけどどっちを使ったらいいと思う?
サイズは微妙に違う(後者の方が大きい・・・)

414 名前:411 mailto:sage [2010/02/21(日) 14:17:13 ]
俺はQtのSDKの方じゃなくて「フレームワークのみ」の方からダウンロードして使ってるので
ディレクトリ構成が違うのでわからないけど,PATHの通ってる方でいいじゃないか?

PATHを通さずに使ってるのなら,>>401と同様のところの[実行時の環境変数]を見れば
いいと思う。

415 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 14:25:50 ]
>>414
> PATHを通さずに使ってるのなら,>>401と同様のところの[実行時の環境変数]を見れば
> いいと思う。

\Qt\2010.02\qt\bin

こっちを使っているみたいノシ

416 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:33:12 ]
>>409
7→4秒程度になりました。
(analogclock.exe msvcp80.dll msvcr80.dll)
このへんが限界なんでしょうかね?


//これでやっと.net並みorz

417 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:48:22 ]
>>413
前者はSDKのツール用のDLL。Qt Creator とか。
後者はフレームワーク用のDLL。

作ったアプリでリンクされるのは後者なので後者を使う方が無難。

418 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 18:34:26 ]
Win版QtCreatorのソースってSDKに含まれてるんでしょうか?
\Qt\2010.02\qt\srcの中にそれっぽいフォルダが見つからなかったもので。

419 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 19:37:42 ]
>>418
Creator のソースは別
qt.nokia.com/downloads/qt-creator-source-package

420 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 19:40:31 ]
Qt on Android って雲行きが怪しいんだなぁ



421 名前:418 mailto:sage [2010/02/21(日) 21:14:58 ]
>>419
あっ、なるほど!見落としてました。
ありがとうございました。

422 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:43:27 ]
もはやQtはMeeGo一択でしょ
AndroidはGoogleがオラオラすぎで
ポカーンって感じ

LiMoとMeeGoに収束するんじゃないかと思う

423 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 00:37:22 ]
もっかQtを勉強中。
サンプルを眺めてみるとシグナルとコネクタを結ぶconnect関数を定義する場所は
どれもだいたいシグナルを発するクラスのコンストラクタの中で宣言しているみたい。

これってそういう決まりだと思って素直に受け入れるべきもの?
それともこれは一つの流儀であって別にコンストラクタの中で宣言しなくてもいいもの?

424 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 01:12:07 ]
>>423
connect() を呼び出す場所のことか。
コンストラクタで呼ぶのはそのクラスの寿命の間に接続関係に変化がない場合。

別にそれ以外の場所で connect() や disconnect() を使ってシグナルの接続関係を変えても問題ない。
サンプル程度の短いものだとあまりそんな処理が出てきてないだけだと思う。

425 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 03:03:51 ]
>>424
そうなんだ。重要なのはapp.exec()を実行するまでにどこかしらの場所でconnect()関数が
最低でも一度は呼び出されるようなプログラムを書けと言うことなのね。

426 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 04:21:04 ]
app.exec()の後でconnectしてもそれまでにsignal来ないなら大丈夫

427 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 08:50:40 ]
m_fileMenu = new QMenu(menuBar());
menuBar()->addMenu(m_fileMenu);
QMainWindowを継承したクラスで、こんなコードがあります
なんで、QMenuに引数にthisじゃなくて、menuBar()なの?

428 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:56:29 ]
親(引数parent)を指定してるんじゃないかな
addMenu()でも勝手に親子関係が設定される
(結局parentに代入される)ので
m_fileMenu = new QMenu();
menuBar()->addMenu(m_fileMenu);
でも動くと思う

429 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:10:21 ]
どういう親子関係なのか聞きたいんじゃないかと予想してみる
ウインドウ→メニューバー→メニュー→メニュー項目

430 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:24:02 ]
m_file ってんだから「(&F)ファイル」だろうな



431 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:25:46 ]
>>427
>QMainWindowを継承したクラスで

thisを渡すとMainWindowが親になっちゃうから

432 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:26:57 ]
>>427 >>431
結局コンストラクタで何を引数にしていても
menuBar()->addMenu(m_fileMenu);
で上書きされると思うんだが

433 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:36:37 ]
QMenuのヘルプを読む限り、QMenuのコンストラクタに渡すparentは他のQObject
からの派生クラスと同じように、自動deleteのためだけのようだよ。
だから>>427の例ではにコンストラクタの引数は別にthisでもいいんじゃないの?


434 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:45:31 ]
>>433
メニューバー交換したらリークしませんか?

435 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:53:37 ]
メニューとメニューバーの親子関係と、QObjectの自動破棄メカニズムは
別のものだから関係ないような気がするけど...

436 名前:デフォルトの名無しさん [2010/02/22(月) 21:54:48 ]
質問させてくださいm(__)m PyQtを勉強しております。
QtDesignerで作成したあるwidget(QVBoxLayoutの中にQLabelやQButtonが配置してあるような物)
を、そのかたまりのまま動的に配置したいと思っているのですが、
どんな流れで実現させるのが一番便利でしょうか?

想像ではDesignerで出てきたUi_Frameクラスをそのままメインウィンドウで
self.wid = Ui_Frame(self)
tLayout = QtGui.QVBoxLayout()
tLayout.addItem(self.wid)
と、できれば嬉しかったのですが、、、どうも
TypeError: QBoxLayout.addItem(QLayoutItem): argument 1 has unexpected type 'Ui_Frame'
というエラーになってしまいます。

いくつ配置するか想定できないので、欲しい数分Designerで配置するのは不可能です。

初心者まるだしですいません、よろしくお願いします。

437 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:04:04 ]
self.wid = QtGui.QWidget()
PyQt4.uic.loadUi('hoge_frame.ui', self.wid)
tLayout = QtGui.QVBoxLayout()
tLayout.addItem(self.wid)

438 名前:デフォルトの名無しさん [2010/02/22(月) 22:46:58 ]
>437
大変、ありがとうございます。
ただもうひとつ聞かせてください。
DesignerでどのFormを選ばないといけない、などあるのでしょうか?

Widgetで始めるとaddItemでエラーが出てしまい、
TypeError: QBoxLayout.addItem(QLayoutItem): argument 1 has unexpected type 'QWidget'
QFrameで始めるとLoadUiでエラーが出てしまいます。
TypeError: ('Wrong base class of toplevel widget', (<class 'PyQt4.QtGui.QWidget'>, 'QFrame'))

439 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 00:30:14 ]
Windows 用 Qt SDK 2010.02.1 リリース
ttp://labs.trolltech.com/blogs/2010/02/22/qt-sdk-201002-reloaded/
クラッシュするから Windows 用だけアップデートだと。

440 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 02:03:16 ]
>>439
上書きインストールってできたっけ?
それとも一度アンインストールする必要あり?



441 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 07:03:39 ]
>>438
>TypeError: QBoxLayout.addItem(QLayoutItem): argument 1 has unexpected type 'Ui_Frame'
>TypeError: QBoxLayout.addItem(QLayoutItem): argument 1 has unexpected type 'QWidget'
>TypeError: ('Wrong base class of toplevel widget', (<class 'PyQt4.QtGui.QWidget'>, 'QFrame'))


QBoxLayout.addItem(QLayoutItem)
の引数の型と一致していないんじゃない?

442 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 19:32:49 ]
QNetworkAccessManager::finished(QNetworkReply *reply)
でダウンロード後の処理をしようと思うのですが、
QNetworkReply::finished()
の方とどっちでするのが良いでしょうか?
前者は複数セッション同時にダウンロードしてても大丈夫でしょうか?

443 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 21:26:44 ]
やりたいようにやればいいんでね?

444 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 23:25:58 ]
QPixmapをloadしたいのですが、
実行ファイルを開発環境以外に移して実行すると、png以外開けません。

もちろん、開発環境下ではそれ以外も開けるのですが、
dllなど何が必要で、どう設定すれば良いのかわかりません。

教えていただけると助かります。

445 名前:444 mailto:sage [2010/02/23(火) 23:28:46 ]
申し訳ありません、書き忘れました。

開発環境は、Windows XP で Qt Creater(MinGW) を用いています。
つまり、ダウンロードできるパッケージをそのままインストールした感じです。

446 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 23:37:15 ]
>>410-411

447 名前:444 mailto:sage [2010/02/23(火) 23:54:33 ]
>>446
ありがとうございます。
そのツールを使って確認しましたが、それらしいdllはなく、
表示されたdllを全て詰め込みましたが駄目でした。

jpgやgifなどは、デフォルトでは使えず、プラグインを使用してるという記事も目にしましたが、
実際にどこを参照しているのかがわかりません。

448 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 00:03:37 ]
C:\Qt\2010.02\qt\plugins\imageformats

449 名前:444 mailto:sage [2010/02/24(水) 00:08:48 ]
>>448
やはりそこなのですね、ありがとうございます。

そこにあるqjpeg4.dllやqgif4.dllを詰め込んでみましたが、これでは駄目でした。
どこかで明示しないといけないのでしょうか?


450 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 00:19:30 ]
どこに置いた?
plugins の下はアプリのバイナリと同じ場所からは読まない。
プラグインのディレクトリの imageformats の下から。
アプリと同じ場所に plugins\imageformats を作るか
imageformats を作れば良かったはず。

QLibraryInfo::location(QLibraryInfo::PluginsPath) を参考に場所を決めるといい。
qt.nokia.com/doc/4.6/deployment-windows.html



451 名前:444 mailto:sage [2010/02/24(水) 00:31:59 ]
>>450
できました!
結果的には、おっしゃるように、アプリケーションと同じ場所に imageformats を作れば良かったようです。
それまでは、dllを直に置いていました。

ありがとうございました!


452 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 03:18:59 ]
>>367
QHttp で書いていたのを QNetworkAccessManager で書き直しましたところうまくいきました。ありがとうございました。
#include <QtCore>
#include <QNetworkAccessManager>
#include <QNetworkCookieJar>
#include <QNetworkReply>
#include <iostream>
class QUrl;
class Qt2chwr : public QObject {
Q_OBJECT
public:
Qt2chwr(QObject *parent = 0);
void postmsg(const QUrl &url, const QByteArray &dat);
signals:
void done();
private slots:
void fin(QNetworkReply *reply);
void err(QNetworkReply *reply, const QList<QSslError> &errors) {}
private:
QNetworkAccessManager *nam;
QByteArray data;
};
#include "qt2chwr.h"
int main(int ac, char **av){
QCoreApplication app(ac, av);
Qt2chwr w;
QObject::connect(&w, SIGNAL(done()), &app, SLOT(quit()));
QString dat(QObject::trUtf8("bbs=unix&key=1236650121&FROM=&mail=sage&MESSAGE=さげ&time=1236650121&submit=書き込み&tepo=don"));
QTextCodec *jp = QTextCodec::codecForName("sjis");
w.postmsg(QUrl("pc12.2ch.net/test/bbs.cgi"), jp->fromUnicode(dat));
return app.exec();
}

453 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 03:21:02 ]
Qt2chwr::Qt2chwr(QObject *parent) : QObject(parent){
nam = new QNetworkAccessManager(this);
nam->setCookieJar(new QNetworkCookieJar());
connect(nam, SIGNAL(finished(QNetworkReply *)), this, SLOT(fin(QNetworkReply *)));
connect(nam, SIGNAL(sslErrors(QNetworkReply *, const QList<QSslError> &)), this, SLOT(err(QNetworkReply *, const QList<QSslError> &)));
}
void Qt2chwr::postmsg(const QUrl &url, const QByteArray &dat){
QNetworkRequest request(url);
request.setRawHeader("User-Agent", "Qt4");
request.setRawHeader("Referer", url.toString().toAscii());
nam->post(request, data = dat);
}
void Qt2chwr::fin(QNetworkReply *reply){
if(reply->error() != QNetworkReply::NoError){
std::cerr << "Error: " << qPrintable(reply->errorString()) << std::endl;
}else{
QRegExp re(QString("<!-- 2ch_X:cookie -->"));
if(re.indexIn(reply->readAll()) >= 0){
postmsg(reply->url(), data);
return;
}
}
emit done();
}

454 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 04:13:02 ]
qt-4.4.3を使っているんですが。
tooltipを表示する速度を変更することはできますか?

455 名前:デフォルトの名無しさん [2010/02/24(水) 12:18:49 ]
>441
ありがとうございます。おっしゃる通りでした!
QLayoutItemの型に合わせるのにてこずりました。。

456 名前:デフォルトの名無しさん [2010/02/24(水) 20:27:31 ]
ボタンなどではなく、QLabelやフォームからclickedのシグナルを検知することはできますでしょうか?
QTデザイナーでシグナル&スロット編集で見れるものしかとれないのでしょうか。。


457 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 20:43:01 ]
FreeBSDでQtをソースからgmakeしてコンパイルしているんだけど毎回同じところでエラーが出て中断される

swap_pager: out of swap space
swap_pager_getswapspace(11): failed
Fet 24 04:15:26 localhost kernel: pid 21197 (ld), uid 1001, was killed: out of swap space
g++: Internal error: killed: 9 (program ld)
Please submit a full bug report.
See <URL:gcc.gnu.org/bugs.html> for instructions.
gmake[1]: *** [../../lib/libQtGui.so.4.6.2: Error 1
gmake[1]: Leaving directory '/tmp/qt-everywhere-opensource-src-4.6.2/src/gui'
gmake: *** [sub-gui-make_default-ordered: Error 2

なんだろね(´・ω・`)?

458 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 20:56:00 ]
>>456
そもそも QLabel や QLineEdit などには clicked() シグナルがないので無理。
mouserPressEvent(), mouseReleaseEvent() を継承して自分で clicked() シグナルを出すか、
編集がいらない場合はボタンをラベル的に扱うか。

459 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 20:57:55 ]
>>457
普通にエラーメッセージ通りなのでは?
スワップできないとかあるから、
HDD掃除かパーティーションきり直しか。

gccのバグだったらごめんぬ。

460 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 21:13:48 ]
>>459
swapは/に統合してあるからHDDの容量が限界を迎えるまで余裕があるはずなんだけど(´・ω・`)・・・



461 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 21:56:57 ]
>>459
失礼、swapは独立した領域に256MB確保していた。
でも256MBでも足りなかったのか・・・
最近のソフトの肥大化は恐ろしいな(´・ω・`)

というわけで急遽512MBの緊急SWAPを追加してコンパイル再開中

462 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 23:42:49 ]
はじめまして。
OSS版のQtをVisualStudio2008 Expressで使用しています。
テキストエディタを右クリックしたときのメニューや、
ダイアログのキャンセルボタン等が英語で表示されているので
www.sra.co.jp/qt/relation/index.html
の情報とかを使って日本語で表示するようにしようとしたのですが、うまくいきません。
もしご存知の方がいましたらやり方を教えていただけないでしょうか。
よろしくおねがいします。


463 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 02:48:04 ]
>>461
swap_pager: out of swap space

もしかして失敗して中断したら
make clean
してから
make all
とかやってる?
それだと毎回同じところで止まるけど
上の中断なら失敗したところからすぐさま
make all
だけで続きから始まるし swap もリセットされて上手くいくよ?

464 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 03:41:36 ]
>>463
> make all

ね、ありがと。ためしてみる(´・ω・`)ノシ

ところでまた新たに別のエラーが出てコンパイルが止まってた。


/qt-everywhere-opensource-src-4.6.2/bin/qmake -spec /mkspecs/freebsd-g++ -unix -o Makefile WebCore.pro
Cannot find file: WebCore.pro .
*** Error code 2

Stop in /qt-everywhere-opensource-src-4.6.2/src/3rdparty/webkit/WebCore .
*** Error code 1

Stop in /qt-everywhere-opensource-src-4.6.2.


もうねorz・・・

465 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 04:17:47 ]
(´・ω・`)ノシ

466 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 04:19:38 ]
>>458
どうせ1個とか2個しか使わない上に単純な処理なんだったら、そのQLabelを作るクラスにeventFilter定義する方法もあるよね。
そしたらQLabelのサブクラス作らなくてすむけど、QLabelからシグナル出すって目的は果たせない。
eventFilterもってるクラスでスロット直接呼び出すか、そのクラスのシグナルを発生するかだな。

467 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 12:52:29 ]
Qt Creatorでアクションエディタに登録したアイコンをツールバーにドラッグ&ドロップするだけで
簡単にツールバーがデザインできるのは便利だど思うんだけど、ツールバーにアイコン以外
(例えばドロップダウンリスト)を配置したい場合はQt Creatorでは無理な話ですか?

468 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 13:08:08 ]
(´・ω・`)

469 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 15:20:09 ]
(´・ω・`)

470 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 16:09:34 ]
QStringList args = app.arguments();
でコマンドラインオプションを取得するとき
オプションの中に「%」が含まれていると
args[1] にうまくデータが入りません
「%0D」だと「1267081114D」という文字列になってしまいます
「%%0D」とか「\%0D」とかを試しても駄目でした
なにが間違っているのでしょうか?

WindowsVistaで使って居ます




471 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 16:28:12 ]
ttp://www.off-soft.net/ja/develop/qt/qt1-1.html

472 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 18:55:58 ]
あれれ?
Qt creator 1.3.1に上げたらhelpがうまく使えなくなった。
検索キーワード入力して、項目の候補が出てくるんだけど、
それクリックしても中身が出てこない。

使い方変わったのかな?



473 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 19:12:54 ]
ヘルプの[コンテンツ]を選択したときに、各種のマニュアルのリストが出てくれば
大丈夫だと思うんだけど...

出てこなければ、[ツール]メニューの[オプション]⇒{ヘルプ}⇒[ドキュメント]に
ちゃんと各種のヘルプファイル(.qch)が登録されてるかどうか確認してみて。
登録されてなければ、登録しなおせば大丈夫なはず。

474 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 19:33:52 ]
>>473
[ツール]メニューの[オプション]⇒{ヘルプ}⇒[ドキュメント]には
各ヘルプファイルが表示されていましたが(既に存在しない古いモノもありました??)
一度全部消してもう一度全て追加し直した所、表示されるようになりました。

どうもありがとうございました。助かりました。

475 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 19:49:42 ]
>>474
WindowsならAppData以下のフォルダに設定ファイル残ってるからね

476 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 20:52:01 ]
>>467
ワードパッドのフォント選択みたいなことができないかってこと?
今Creatorさわってみたけど多分無理

477 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 03:00:36 ]
Qtのオブジェクトってポインタで受け渡しするものが圧倒的に多いわけだけど
たとえば

connect(sender, SIGNAL(signal), receiver, SLOT(slot));

の"sender"や"receiver"はポインタである必要がある。

Qtの内部がどうなっているのか知らないから何とも言えないけど
なんでわざわざポインタで渡すの?
普通にクラスオブジェクトを渡してもいいじゃない。

478 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 03:08:06 ]
クラスオブジェクトを渡したらコピーコンストラクタが動くから(ry

ポインタじゃなくて参照って話ならわからんでもないが

479 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 03:13:27 ]
>>478
参照渡しでもいいよね。
でもC++ベースの言語であるQtでなぜにあえてポインタ渡し?

480 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 03:15:18 ]
g.c.



481 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 03:25:58 ]
キャスト
ttp://wisdom.sakura.ne.jp/programming/cpp/cpp37.html

482 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 03:33:29 ]
で?

483 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 05:43:39 ]
確かになんでだろう?
まあNULLを渡したい時との、整合性とかじゃね?

484 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 05:55:01 ]
単にWidgetはポインタとして保持する場面が多いから
いちいち*とか付けないでそのまま渡せるようにしただけじゃないのか

485 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 06:05:23 ]
マジレスすると、単にC++ではポインタ渡しが基本だからだと思うが・・・
thisの型は参照ではなくポインタだし、new演算子もポインタを返すし、他の言語ならあるはずのnull参照も存在しない
C++の参照渡しは、スタック上のオブジェクトや右辺値をまるで値渡しみたいに渡せて便利!っていう程度のもの
だからnewしたポインタに逆参照かけて参照渡しするような、むしろ面倒になるケースで使っても意味がない
あと値渡しは基本型に対して使うのが一般的。コンパイラ依存だけどレジスタ渡しになってお得だから
オブジェクトを値渡しするとすんごいコピーしちゃう。VM系言語で言うと毎回ディープコピーして渡す勢い
ということで、ポインタ渡し/参照渡し/値渡しの三択なら、誰が書いてもポインタ渡しを選ぶことになるかと

でもなんでスマートポインタ渡しにしないんだよって話なら俄然わかるよ


486 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 06:27:12 ]
>>485
スマポ渡しにすると、普通は困らないだろうが、
速度を極限まで追求したいときには困るからとか?

過去との互換性かなそれとも。

487 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 07:21:56 ]
ガベコレで回収されたときに辻褄が合うようにするためだと思ってた

488 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 07:23:42 ]
>>484
それだ

489 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 08:58:32 ]
スマートポインタはスマートポインタ同士の互換性がないから。
すべての人がすべての用途に使うスマートポインタがC++にあれば良いけど、
無いから一番汎用的なポインタは生ポインタ

490 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 09:33:31 ]
QMainWindow *w = new QMainWindow();

connect(&*w, SIGNAL(...



491 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 13:37:30 ]
ありがとうございました

492 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 15:00:23 ]
QListViewの行にそれぞれ別の文字色を割り当てるにはどうのように

493 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 15:01:47 ]
>>492
書き途中で投稿してしまいました。

QListViewの行にそれぞれ別の文字色を割り当てるにはどうのように
すればできますか?

494 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 15:12:09 ]
お前ら、ようやく入門Qt4プログラミングを買いましたよ
学生の俺に4k円はデカい

495 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 18:57:28 ]
1つのソース中でOSに依存したコードがある場合、
#ifdef XXX
// for Windows

#else
// other( mac or other unix)

#endif

とかやりたいのですが、Qtの場合 XXXの部分で使える
OS毎に#define された定義って何かあるのでしょうか?




496 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 19:01:01 ]
qt.nokia.com/doc/4.6/winsystem.html

497 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 19:06:16 ]
>>493
できない

498 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 20:08:02 ]
>>494
英語が読めれば全く同じ内容の文書がネットでタダで入手出来るんだが・・・

499 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 20:12:19 ]
英語が読めないんならいいだろ

500 名前:494 mailto:sage [2010/02/26(金) 20:14:33 ]
>>498
普通にそんなこと知らんかった



501 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 20:22:46 ]
>>497
QListWidgetならできるのにQListViewではできないんですか?

502 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 20:26:17 ]
英語が読めるだけじゃ辛いよ

503 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 20:26:44 ]
>>494
英語が読めたとしても、
日本語の書籍がたった4000円で買えるなら、
俺は払うぜ。

4000円だろ?俺も学生だけど、日本に生まれ育っていると
やっぱり日本語の方が絶対読みやすい。


504 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 20:28:54 ]
>>501
サンプルあさくってみ。
やっている奴があったはず。

505 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 20:51:36 ]
>>504
ありがとうございます。
サンプルについてもう少しヒントをください。

506 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 21:13:56 ]
sourceforge.jp/magazine/10/02/25/0735216
Qtで作ったソフトがすごいブックマークされていたので貼り
ソースも公開されてる

507 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 21:54:55 ]
>>493
QStandardItem::setBackground()

508 名前:507 mailto:sage [2010/02/26(金) 21:57:16 ]
文字色だった orz
setForeground()


509 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 22:58:05 ]
>>507
できました。
本当にありがとうございます。

510 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 07:41:03 ]
なんでこんなにブックマークされてんのか
いまいちよくわからんな



511 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 12:37:02 ]
Bearer Managementが4.7から入るんだね
コレ早く正式版出ないかな

512 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 12:57:55 ]
class CustomClass : public QObject
{
Q_OBJECT

signals:
void valueChanged(int);

public slots:
void display(int);
};

> コンパイル時には,signalsはprotectedに,slotsは空にそれぞれ置換えられます。

gihyo.jp/dev/feature/01/qt/0002?page=2


signals: はそれでいいとして、public slots: は slots: → public: に置き換えるようにすれば

slots:
void display(int);

と記述を簡易化できない?

513 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:06:10 ]
>>512
protected slots:
private slots:
ってのがあるんじゃね。
あと、可読性が悪くなるじゃん。


514 名前:513 mailto:sage [2010/02/27(土) 13:08:14 ]
つまり
publicって一言も記述していないのに
以下パブリックになっちゃったら可読性が微妙ってことじゃない?

あとは過去との互換性。

515 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:52:41 ]
Qt Designer は Qt Creator があれば必要ないように思うんだけど
Qt Designer にしかできないことってあるの?

516 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:54:56 ]
QtCreatorを使わない人が使う。

517 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 14:17:06 ]
>>515
Qt Creator は Qt Designer のラッパ的なものでしょ?

518 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 14:18:10 ]
お前は何を言っているんだ

519 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 14:29:12 ]
>>495
>>496 にも書かれている他には、
Q_OS_WIN32 とか Q_OS_MAC がある。
関係ないけど、コンパイラごとに条件分けするにはQ_CC_MSVCなどが使える。

↓で、Q_WS_* Q_OS_* Q_CC_*を参照
qt.nokia.com/doc/4.6/qtglobal.html


520 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 18:29:48 ]
QtCteator1.2.1
MainWindowフォーム上にQWidgetを貼って、これを格上げしたいんですが
格上げするクラスとして
ファイル>新規作成で、Qtデザインフォームクラスを選ぶとuiファイルも作成されて
しまいますし、
cppにQPainter painter(this)を書くと
variable 'QPainter painter' has initializer but incomplete typeとなってしまいます。

C++クラスを選び、基底クラスにQWidgetを選ぶと、QWidgetを継承したhとcppが
作成されますが、コンストラクタの引数にQWidget *parent=0が無いのでこちらで書き足さないと
ダメみたいですが、

格上げ用のクラスファイルの作り方はどれが正解でしょうか?




521 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 19:40:25 ]
>>520
後者。引数は特に付け足さなくてもいい。

522 名前:520 mailto:sage [2010/02/27(土) 22:23:34 ]
>>521
ありがとございます。
でも、引数なしにすると
no matching function for call
のエラーになってしまいます。


523 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 01:25:12 ]
CustomClass::CustomClass() : parentClass(){


524 名前:522 mailto:sage [2010/02/28(日) 12:00:58 ]
引数なしだと、やはり
no matching function for call to'Drawing::Drawing(QWidget*&)'
となり
void setupUi8QMainWindow *MainWindow)
{
.
.
widget = new Drawing(centralWidget);
のところが指摘されます。

なにか、やり方がまずい?

525 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 12:29:15 ]
「格上げ」って、サブクラスを作る機能だというのはわかるんだけど、
そもそもどういう時に使うの?


526 名前:デフォルトの名無しさん [2010/02/28(日) 12:41:56 ]
質問失礼します。
PyQtを使っています。
QTDesignerで作成したuiファイルから取得したwindowを
別のWindowとして表示したいのですが

menu = uic.loadUi('ui_test.ui', self)
menu.show()

などで行うと、一瞬別Windowが描画されて消えてしまいます。。
足りない処理や、別手法などがあればアドバイスお願いいたします。

527 名前:526 [2010/02/28(日) 14:02:21 ]
自己解決しました。
親のクラスのインスタンスにしたら描画の問題が解決しました。

528 名前:522デフォルトの名無しさん mailto:sage [2010/02/28(日) 15:20:33 ]
>>525
MainwindowにQWidgetなどを貼って、図形などを描くための
painterEvent関数を追加するときとか


529 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 16:20:54 ]
>>525
自分で作ったウィジェットをUIに埋め込みたいとき。

530 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 16:26:42 ]
>>520
うーん、じゃあ面倒くさいけど付け足すしかないみたいだねぇ。



531 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 16:57:13 ]
39

532 名前:525 mailto:sage [2010/02/28(日) 18:10:32 ]
>>528, >>529
理解できた。サンクス。

533 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 04:10:56 ]
今Qt本買うとしたら”入門Qt4プログラミング”でおk?

534 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 09:18:41 ]
>>533
おk

535 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 09:25:48 ]
英語が読めれば全く同じ内容の文書がネットでタダで入手出来るんだが・・・


536 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 09:30:21 ]
言語が違うものを同じ内容とするのはどうかと思う

537 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 09:35:12 ]
>>535
どこ行けばあるの?

538 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 09:49:58 ]
複数のDock Widgetをタブ表示した時、タブ位置を変更するにはどうすればいいんだろう。

539 名前:538 mailto:sage [2010/03/01(月) 10:01:01 ]
あと、複数Dock Widgetをタブ表示した時、タブをドラッグして表示順序を変更したりすることはできる?

540 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 11:14:24 ]
QMLの話題ってでてこないね
WPFもイマイチ盛り上がってないみたいだし



541 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 11:47:48 ]
>>540
QMLってWPFみたいなもんだっけ?

542 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 16:39:26 ]
>>537
C++-GUI-Programming-with-Qt-4-1st-ed.pdf
で検索

543 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 16:41:26 ]
>>542
公式の配布場所は?

544 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 17:42:07 ]
横からsunks

545 名前:デフォルトの名無しさん mailto:sage [2010/03/02(火) 23:23:37 ]
入門Qt4プログラミングを120ページくらいまで読んだけど、
ひたすらアルゴリズムを説明しているような

本当にオライリー本なのか?と疑うような

546 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 00:03:54 ]
「入門 Qt4プログラミング」@Google ブックス
books.google.co.jp/books?id=DyGwIpisoG0C&printsec=frontcover&source=gbs_navlinks_s

547 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 00:44:00 ]
>>542
検索してみたけど、bittorrentや中国・韓国のサイトしかないような。
(1つだけ.frのもあるが。)

・・・これって合法な代物なの?
えらそうに英語版PDFがあるっていうから、
てっきり合法なんだと思ってるんだけど。


548 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 02:00:23 ]
Windows版のQt Creatorのアプリケーション出力で結果がちゃんと出力されないんだけど俺の環境だけ?

#include <iostream>
using namespace std;
int main()
{
cout << "test" << endl;
}

これでやってみても
xxx.exe を起動中...
xxx.exe はコード 0 で終了しました
で終わっちゃう
Linux版だとちゃんと表示されるんだけどな・・・

549 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 02:08:09 ]
>>548
CONFIG += console

550 名前:548 mailto:sage [2010/03/03(水) 02:17:24 ]
>>549
ありがとう
でも、それってコマンドプロンプト起動してそこに実行結果表示するやつだよね?
そうじゃなくてQt Creatorのアプリケーション出力に出力したいんだよ



551 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 02:32:52 ]
>>545
お雷リーってそういう本だろ

552 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 02:44:31 ]
>>547
本は白黒なのにPDFの方はカラーだよね
それに(日本語の)本の方は誤字脱字だらけで
ソースもバグだらけだけど
PDFの方は問題ないんだよねw


553 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 02:46:56 ]
>>550
qDebug()

554 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 03:24:33 ]
>>548
WindowsのGUIアプリにはprintfとかcoutの出力先が基本的に存在しない
デバッガのコンソールに出力したい場合はAPIのOutputDebugString()というのを使う
Qt使ってる場合はqDebug()でおk

555 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 09:02:13 ]
qDebug()文字化けするお

556 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 09:38:58 ]
>>555
オライリー「入門 Qt4プログラミング」の付録A 日本語関連FAQ 参照

557 名前:デフォルトの名無しさん [2010/03/03(水) 11:52:42 ]
MainwinodwにQWidetを貼って、これを格上げして
ui->widget->メンバー関数 で使ってたものを
外のQListWidgetやQpushButtonなどと水平レイアウトでくくりと
QWidget has not menber name メンバー関数になってしまいます。

なぜでしょうか

558 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 17:50:46 ]
>>555-556
あれ間違ってるんだよなー

559 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 19:03:44 ]
間違っているってどこが?

560 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 23:14:30 ]
>>553,554
ありがとう



561 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 12:29:12 ]
Windows XP(コンパイラはVC 2008)でQt Creatorで作ったアプリのデバッグしてるんだけど,
デバッガの動きが極端に遅い。デバッグヘルパOFFにしてみたけど大差なし。

ステップオーバーに数十秒も掛かったりするんだけど,こんなもんなの?
まぁ,マシンは数年前のLet's Noteなんでパフォーマンスが望めないのはわかってるけど,
いくらなんでも遅すぎ。
デバッグウィンドウに赤文字で意味不明のワーニングが出たりしてるけど,そのせいなのかな。

MinGW gccでgdb使った場合も遅いんでしょうか?

562 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 14:40:22 ]
そういや、Qt4 Createrは最低どれくらいのマシンスペックが必要なんだろう
ざっと探したが見あたらない…

563 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 16:25:41 ]
メインウィンドの右半分にテキストエディタを配置して、これを
メインウィンドの伸縮に合わせて延びちじみさせたいんですが
テキストエディタのプロパティ設定では出来ないんでしょうか。


564 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 16:35:34 ]
>>563
出来ないです。

565 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 16:48:27 ]
左に何を置くか次第だが sizePolicy や minimumSize をきちんと設定すれば出来ると思う。

566 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 17:40:32 ]
>>565
毎回、そのsizePolicyとかminimumSizeで悩む。
で、毎度毎度試行錯誤して決めてる。
ちゃんと理解してないからだと思うんだけど、、
どこかに良い資料とかないですかねえ。。


567 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 19:05:45 ]
>>547
www.informit.com/articles/index.aspx?st=60233&page=2
ここは、合法だろう。多分本の内容全部ある。

568 名前:561 mailto:sage [2010/03/04(木) 20:30:25 ]
>>561
自己レスです。自作のDLLの更新とインポートライブラリやヘッダの更新が合ってなくて、
関数のエントリポイントがずれたりしていたのが原因だったようです。

さすがにステップ実行に数十秒もかかるようなことはなくなりましたが、やはり最初の
ブレークポイントで止まるまでは相当時間が掛かりますね。

569 名前:563 mailto:sage [2010/03/04(木) 22:15:42 ]
sizePolicyをいろいろいじってみてたんですが、よく分かりません

MainWindowにresizeEventを書いて、ここで
ui->TextEdit->setMaximumSize で出来そうな気がしますが
setMaximumWidth(sizeHint().width()); としたら、TextEditのminimumSizeに
なってしまいました。
sizeHintは最適なサイズを返す関数だと思うんですが、

570 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 23:00:26 ]
>>547
心配ならこの中から探して落とせ
ttp://qt.nokia.com/developer/learning/qt-essentials-curriculum-block



571 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 23:19:42 ]
>>563
たとえば Designer で QWidget に QListView と QTextEdit を QHBoxLayout を使って配置する場合、
QTextEdit の sizePolicy を Expanding に
QListView の sizePolicy(Horizontal) を Preferred や Fixed にすると
プレビューでリサイズした場合に QListView は固定サイズで QTextEdit だけ
大きくなっていくけど、これは違う?
( Preferred の場合は sizeHint で指定したサイズまでは QListView もリサイズするけど )

572 名前:569 mailto:sage [2010/03/05(金) 20:01:42 ]
>>571
OS:Ubuntu Qt:4.5.2 Creator:1.2.1
どこが違うのか、うまく行きません
QListViewをFixedの QTextEditをExpandingに設定し 両方を選択
右クリックからレイアウト>水平に配置
この段階で、ウィンドウの大きさに関係なく、QListViewとQTextEditがウィンドウの
中央あたりで正方形に近い形で横に二つ並んで状態になる。
手動で大きさを調整しても勝手に変わってしまう
オブジェクトインスペクタではQHBoxLayoutの下にQListView QTextEditがある
この状態になるとQListViewもQTextEditもサイズ変更できなくなる

で、実行してウィンドウを伸縮しても、変化しない

と言う状態です。
Linux版のせい?


573 名前:デフォルトの名無しさん [2010/03/05(金) 20:38:43 ]
>>572

Linux 版は関係ありません。これらの説明をじっくり読みましょう。
Qt のレイアウトマネージメントは、他のものに比べて分かり易いです。

Qt 4.5.3: Layout Classes
doc.trolltech.com/4.5/layout.html

InformIT: C++ GUI Programming with Qt4: Layout Management > Laying Out Widgets on a Form
www.informit.com/articles/article.aspx?p=1405543

574 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 21:21:33 ]
>>572
>QListViewをFixedの QTextEditをExpandingに設定し 両方を選択
>右クリックからレイアウト>水平に配置

「両方を選択」しないで「外のQWidgetを選択」してレイアウトを指定。

575 名前:572 mailto:sage [2010/03/05(金) 22:17:02 ]
>>573,574
できました。ありがとうございました

576 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 00:33:52 ]
QtのGUIをWindowsのXAMLみたいにXMLで記述することってできますか?

577 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 00:40:32 ]
designerが掃き出す*.uiってXMLなんだが

578 名前:576 mailto:sage [2010/03/06(土) 00:58:16 ]
あっ、すみません、言葉足らずでした。
プログラム実行時にXMLで記述された内容に従ってGUI表示ってできますか?
つまりXMLを編集してプログラム実行時に表示内容を変更できないかと。

579 名前:576 mailto:sage [2010/03/06(土) 01:09:09 ]
良く考えたらシグナルとスロットのconnectとか考えたらXMLじゃなくてQt Scriptで記述しないとダメかもですね。。。

580 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 01:33:05 ]
できます



581 名前:576 mailto:sage [2010/03/06(土) 11:59:30 ]
>>580
できますか!
どこかに参考になるサンプルコードなどあれば教えていただけないですか?

582 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 13:11:34 ]
>>580
現実的じゃない
全ての分岐を書くくらいならQtScript用のコード生成したほうが楽

583 名前:sage [2010/03/06(土) 15:09:41 ]
カスタムWidgetなどにショートカットをつける事はできますか?
QPushButtonにはsetShortcutで簡単にセットできるのですが、
自作のWidgetにショートカットでクリックイベントを渡す事ができません。
keyPressEventなどで地道に全部書くしかないんでしょうか・・

584 名前:575 mailto:sage [2010/03/06(土) 15:18:11 ]
たびたび、すいません。
左右ペイン風のフォームを作り、右にTextEditをExpnading、左にLineEdit、PushButtonなど
を垂直レイアウトした場合うまく動作するんですが
左にListWidgetを加え場合、左レイアウトの幅がListWidgetのデフォルト幅の256
になってしまい、思うようなレイアウトになりません。


585 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 15:44:12 ]
>>581
QUiLoader
Qt Designer の .ui ファイルで出来ることは限られているから
どのくらいやりたいことと合うのかは知らんが。

まだ開発中だし、XMLでもないが今後なら QML が入ってくるから
やれることも広がってくる。

586 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 15:48:37 ]
>>583
QAction に setShortcut して、その triggered() シグナルを
自作の Widget のスロットに connect() すれば出来ると思う。

587 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 23:17:42 ]
変換
無変換
カタカナひらがな

このキーはeventでなんの反応も無いのは仕様?
反応させる方法ある?

588 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:07:59 ]
なんとなくわかった
IMEが横取りしないようにしなきゃだめなのか

589 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 16:17:33 ]
こっちには機知概来てなくて良かった

590 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 17:18:39 ]
Qt使ってファイルのタイムスタンプの更新ってどうやるの?
まさか、できない?



591 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 18:14:12 ]
>>590
できない。


592 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 21:06:59 ]
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!

593 名前:デフォルトの名無しさん [2010/03/07(日) 22:15:09 ]
>>590
QProcess

594 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 23:37:56 ]
>>593
touchしろってこと?

595 名前:583 mailto:sage [2010/03/08(月) 16:27:24 ]
QActionでショートカットを作成しました。が、
同じKeyを二つの関数にconnectすると
QAction::eventFilter: Ambiguous shortcut overload: x

とかになってしまうのですが、
動作させる方法はありますでしょうか?


596 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 02:14:40 ]
>>595
同じ Widget に同じキーシーケンスの action があると問題があるみたいだな。
QWidget::addAction() でショートカットを Widget と結びつけてる?
それぞれのアクションが別の Widget にあればフォーカスに応じて
適切に使用される action が切り替わるようだけど。

597 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 09:39:46 ]
decimal型を使いたいのですがQtにはありませんか?
自作しないとだめ?

598 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 10:02:28 ]
普通にgmpでも使えば?

599 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 12:56:37 ]
* Qt LGPL 版で開発をした後に、Qt 商用版に移ることはできません。

これの意味が分からんのだけど、一旦開発したソフトをLGPLとして公開して
しまったらもう商用版に移行できないってことなの?

600 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 13:02:57 ]
>>599
確か代理店にもらったライセンスの説明資料に,プロトタイプをLGPL版で開発した後に、
本番ソフトを商用版で開発するのもダメって書いてあったよ。

公開/非公開は関係ないらしい(バレるかどうかは別として)。



601 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 13:11:10 ]
極端だが、LGPL/GPL 版を使って多人数で開発しておいて、
最後の最後で商用版を1ライセンスだけ買ってリリースするようなことはするなってことなんだろう。
商用ライセンスでリリースするならきちんとライセンス料金を払って開発しろと。

602 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 13:21:57 ]
うぉ、即レスサンクス。
そーなのかー。なんか変な制限だなぁ。
最初LGPLで作ってうまくいったら商用版ていう流れは普通に考えられる
ケースだと思うんだけど。特に個人レベルの場合は。

603 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 13:40:37 ]
>>602
商用目的なら最初から商用版使えってことだから
別に変な制限じゃないと思うけど。
LGPL版はお試し版じゃないんだから。

開発目的が商用なのかそうじゃないのかを事前に
判断できないケースはそうそうないでしょ。

604 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 13:50:34 ]
試したいなら評価用ライセンスもあるからな。
納得いくかどうかは別として理解は出来る。

LGPL 版使って商用アプリを出すことも出来るから
わざわざ商用ライセンスを買うこともないと思うが。

605 名前:デフォルトの名無しさん [2010/03/09(火) 15:49:11 ]
質問です:

Qt Creatorを使って".ui"ファイルをポトペタ修正していますが、
menuToolsに"Setup"と文字列設定すると実行時にそのメニューが消えてしまいます。
"Setup"でなくて、先頭にスペースを入れて" Setup"としたり、
末尾を切って"Setu"とかすると、メニューが表示されます。

さらにQt CreatorをMac OSで使ってる場合のみで、Windowsでは発生しないみたいです。

原因を知りたいですし、その次には、どうやって対処したら良いのでしょう?

606 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:49:37 ]
QtWebkitとかって
商用版でもLGPLになるのか

607 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:05:21 ]
>>605
メニューの QAction::MenuRole がデフォルトでは QAction::TextHeuristicRole になっているため。
Mac OS X のメニューのルールに従ってそのアプリケーションの「環境設定」メニューに割り振られるから。
メニューバーのアプリケーションメニューのところに組み込まれているはず。
qt.nokia.com/doc/4.6/qaction.html#MenuRole-enum

移動されたくなければ NoRole に設定すればいい。 Qt Designer でも設定できる。

608 名前:605 mailto:sage [2010/03/09(火) 16:36:46 ]
>>607
OKでした。席外して帰ってきたらさっそくご回答有難うございましたorz

609 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:51:42 ]
連続質問スマソ:

Qt Creatorを使って".ui"修正でmenuToolsを追加しましたが、
Qt Creatorでのイベントハンドラの追加方法が分かりません。

Qtのシグナルとスロットは勉強しましたし、
ソースコードでメニューをnewしてイベントと関数を結び付けるソースコードも勉強しましたが、
いざ、Qt Creatorでどうすれば良いのか。。。

ダブルクリックでイベントハンドラが開くのでなく、
シグナル&スロットのペインで、Go to slotメニューを実行して、
Go to slotダイアログを開くってことであってますか?
その先ダイアログの中身が良く分からないですけど。

このあたり、なんでウェブサイトやヘルプに一連のチュートリアルが無いのでしょう?
ソースコードでのチュートリアルは一杯見つかりますが、っていうかそっちばっか検索にひっかかってメンドウ。

610 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 17:09:04 ]
>>609
「Go to slot」でOK。

* Go to slot を選んでダイアログを表示する。
* ハンドラを呼び出すときのシグナルを選択する。
QPushButton なら clicked() だろうし、アクション(QAction) なら triggered() が普通。
* オブジェクトがシグナルを発生した場合に呼び出されるスロットが作成されるので処理を書く。

上記の流れだと connect() が呼び出されてはないが、 Ui クラスの中で connectSlotsByName() が
呼び出されているため、自分で別途 connect() する必要はない。



611 名前:609 mailto:sage [2010/03/09(火) 17:25:16 ]
d。出来ましたorz
menuToolsだと、clicked()が無いので、戸惑いました。
仕方なくとりあえず、triggered()がデフォだったので、それでイベントハンドラ作成されて、メッセージボックス表示させてみましたw

612 名前:デフォルトの名無しさん [2010/03/09(火) 19:31:51 ]
>>606
元々LGPLで一部BSDライセンス。PhononとCLuceneもLGPL。
OpenSSLを有効にしていて、OpenSSLライブラリを配布しようとすると
ライセンスと輸出入制約がある。

613 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 21:14:19 ]
>>612
4.6 からは JavaScriptCore ベースに変わった影響で QtScript モジュールも LGPL になってる。

614 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:56:59 ]
ver4.6.1を使っています。
quitボタンが表示される簡単なプログラムを組んだあと

> qmake-qt4 -project

と実行すると

QFileInfo::absolutePath: Constructed with empty filename

というwarningが表示されます。プロジェクトファイル自体は問題なく生成されそのあとqmake-qt4; make; で無事
実行ファイルも生成できたのですが、このwarningが意味しているのはどういうことでしょうか?
基本的なプログラムにも関わらずwarningが表示されるのはどうも気になります。

↓参考までにquitプログラムの内容です。

#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton *button = new QPushButton("Quit");
QObject::connect(button, SIGNAL(clicked()),
&app, SLOT(quit()));
button->show();
return app.exec();
}

615 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:02:49 ]
doc.trolltech.com/4.6/qmake-running.html#project-mode-options

616 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:14:48 ]
>>615
え〜と・・・、何が足りなかったんでしょう・・・

617 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:16:11 ]
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!



618 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 17:26:22 ]
>throw std::excepton();
は出来ましたけど、
>throw std::excepton("error!");
はコンパイル通りませんb

普通にthrowでエラー文字列投げて、
アプリケーションのエラーハンドラで一括キャッチしたいのですが、
Qt Creatorではどうthrow/catchを書けば良いですか?



619 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 17:51:06 ]
throw std::exception("error!");

620 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 17:54:06 ]
std::exception は abstruct class だから instance 化できない




621 名前:618 mailto:sage [2010/03/10(水) 18:04:45 ]
もうひとつ分からないのは、
>throw std::runtime_error
が無い?????

QtってWindozの場合、実質コンパイラはgccですよね?
無い筈ないよー。


622 名前:618 mailto:sage [2010/03/10(水) 18:10:16 ]
少し思い出したけど、数値や文字を投げる場合は、
>throw 1;
>throw "moji";
でしたね。

C++ Builderみたく、
>thow Exception("aaa");
としたい(ま、標準じゃないエラークラスのとこはいまいちですが)のですが、
Qtな方々は、
ふつー何をthrowして、一括catchはどうやるのが一般的でしょう?

623 名前:618 mailto:sage [2010/03/10(水) 18:17:10 ]
連投スマソ
621の
>throw std::runtime_error("moji");
の問題は、
>#include <stdexcept>
で解決しました。

624 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 18:43:35 ]
C++の勉強して出直して来い

625 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 20:58:04 ]
Qt4.6.2( Win版 )で、
QLineEdit上の日本語入力がめちゃくちゃ重いです。( QTextEdit上では普通に入力できます )
QtDemoでもなります。
Item Views -> Simple Widget Mapperのデモが分かりやすいです。
他の方もこうなりますか?

626 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 21:17:46 ]
Qtで画像ファイルを読み込んでウィンドウに表示することって可能ですか? いくらprintfしても文字しか表示されません。

627 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 21:19:38 ]
#include <qt.h>

main{
printf("gazou.bmp");
}

としてもエラーになります。

628 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 21:23:30 ]
>>625
自分も同じ環境だけど同様です。

629 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 21:57:26 ]
Win版QtはIMEがらみがなんか不安定だよね
QtCreatorでもよくおかしくなるし、QTextEditでもいきなり落ちたりするから怖い

630 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:06:57 ]
IMが鬼門なのはQtは昔からだよなぁ。Linuxでもな。



631 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 02:07:10 ]
なんだ、使い物にならないのか

632 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 02:11:37 ]
せやで!

633 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 03:33:04 ]
非常に細かいことなのですが、Visual Studioでプロジェクトを作成するときに
Qt4 Projectsから作ると環境変数のQTDIRが自動設定されるようなのですが、
これがいったいどこに設定されるのか分かる人いますか?
プロジェクトのプロパティとか見てもコマンドラインで展開されているのは
確認できるんですが、設定箇所を見つけることができません。

634 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 05:29:54 ]
入力だけに限らず変換が遅いみたい
QImeEvent関連の処理が甘いんだろうか?
Qtランタイムごとプロファイルとって見れば一発だけど、俺msvc用のプロファイラもって無いんだよな…

635 名前:634 mailto:sage [2010/03/11(木) 05:39:40 ]
>>634>>625についてです

6.5.4なら問題無かった
次のバージョンでは直ってることを祈ろう

636 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 11:29:54 ]
6.5.4って?

637 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 11:52:32 ]
Visual Studio

638 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 12:25:36 ]
>>627
大きな釣り針?

639 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 12:45:46 ]
>>637
VS6(でコンパイルしたQt)だとIME遅くならないけど,2008だと遅くなるってこと?
話がよく見えない。

640 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 13:03:37 ]
横から
qt-win-opensource-4.6.2-mingw.exe
で同じようにLineEditだけ遅いのを確認



641 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 13:23:55 ]
漏れも良くわからん

642 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 18:23:13 ]
C++ Builder/VCLだと、
アプリケーションクラスにOnExceptionっていうthrowされたものを一括で受けるイベントハンドラがありますが、
Qtには無いですか?

>Qtで独自実装しようにも、
>int main(int argc, char *argv[])
>{
> QApplication a(argc, argv);
> My_Win w;
> w.show();
> return a.exec();
>}

だと、一括catchできませんね。
「My_Win w;」の中に一括イベントハンドラがあるかないか。

643 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 19:14:40 ]







>どゆこと?

644 名前:634 mailto:sage [2010/03/11(木) 19:17:29 ]
>6.5.4
4.5.3の間違いですた。。。
qt-msvc-installer.googlecode.com/files/qt-win32-opensource-4.5.3-vs2008.exe

645 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 19:22:47 ]
OWLを思い出した

646 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 20:42:47 ]
会社の課題で4月1日までに、Rubyで何かを作らないといけないんだけど
Ruby + Qt4で作ったアプリを*.exeに固められる?
まだ、Rubyの文法もわからん

647 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 20:46:20 ]
exerb

648 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 21:02:47 ]
>>647
thx

649 名前:デフォルトの名無しさん [2010/03/11(木) 22:41:44 ]
labs.trolltech.com/blogs/2010/03/11/qt-470-tech-preview-released/

650 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 22:46:40 ]
>>627
おまえにQtは無理w



651 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 01:38:38 ]
この更新の勢いならweb環境も制覇してくれそう

652 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 02:10:37 ]
春休み最強

653 名前:642 mailto:sage [2010/03/12(金) 08:50:21 ]
>>643
>a.exec();

を囲んで一括catchして、
そのエラー処理でもう一回「a.exec();」するってことは出来ないですよね?

654 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 09:42:31 ]
>>653
母国語が通じるサイトで質問し直した方が良いよ。

655 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 10:59:51 ]
>>642
Qtは例外をthrowしないんじゃなかったけ?
実行時に何かエラーがあると,assertでエラーメッセージのダイアログが出る。

それとも自分でthrowしたものを一括でcatchしたいと言う話?

656 名前:642 mailto:sage [2010/03/12(金) 11:32:10 ]
>それとも自分でthrowしたものを一括でcatchしたいと言う話?

こちらです。

657 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 12:17:10 ]
C++の勉強して出直して来い


658 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 12:42:02 ]
>>653

> >a.exec();
>
> を囲んで一括catchして、
> そのエラー処理でもう一回「a.exec();」するってことは出来ないですよね?

何がしたいんだかわからん。何でcatch節の中でもう一回a.exec()するの?

俺はC++ Builder使いだけど,OnExceptionなんて使ったことないよ。
要するにどこでも catch されなかった例外をつかまえて処理するんでしょ。
ただの外部例外防止の意味だけのようにしか思えん。
どこでもcatchされない例外をthrowするようなコード書くほうが悪いと思うが。

普通に try 〜 throw 〜 catch で何か都合が悪いの?

659 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 13:05:30 ]
おわらないようにしたいんじゃね?でーもんとかwww

660 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 13:10:11 ]
春休みですね。




661 名前:642 mailto:sage [2010/03/12(金) 13:11:35 ]
>>659 おわらないようにしたいんじゃね?
その通りでつ。
C++ Builderだと、throw してcatchされなくてエラーメッセージボックスが出るだけですよ。
その動作を変えたい場合は、アプリケーションオブジェクトのイベントハンドラで先に例外catchできまつ。

662 名前:642 mailto:sage [2010/03/12(金) 13:18:03 ]
C++ Builderのmainはこんな感じでつ↓

WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
 try
 {
  Application->Initialize();
  Application->MainFormOnTaskBar = true;
  Application->CreateForm(__classid(TForm1), &Form1);
  Application->Run();
 }
 catch (Exception &exception)
 {
  Application->ShowException(&exception);
 }
 catch (...)
 {
  try
  {
   throw Exception("");
  }
  catch (Exception &exception)
  {
   Application->ShowException(&exception);
  }
 }
 return 0;
}



663 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:54:12 ]
qt creatorってけっこう完成度高いな

664 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 00:50:21 ]
2.0入れてみた
オプションを弄ろうとしただけで落ちたwww

665 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 00:57:12 ]
TP判とはいえあまりにも簡単に落ちすぎw

666 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 11:59:12 ]
プロトタイプ宣言をソースにもっていくときって
やっぱコピペですか?

667 名前:デフォルトの名無しさん [2010/03/13(土) 12:41:11 ]
>>35
それ間違ってるよ
その条件だと全てのソースを公開する必要がある
LGPLでソース非公開で良いのは、動的リンク且つDLLを同梱しない場合に限る

668 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 13:15:04 ]
DLLを同梱しない場合
なんて制限書いてあったっけ?

669 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 13:25:56 ]
Qt Creator 1.3.0をソースを本家から取得してコンパイルしています。

OSはFreeBSDで、既にportsでqt4やqmakeをインストールしてあります。

Qt Creatorの qmake-qt4 -project まではうまく通ったのですが、次のmakeの段階で

/usr/local/bin/lrelease:No such file or directory
*** Error code 1

というエラーコードを吐いて終了してしまうバグに見舞われています。
確かに /usr/local/bin/lrelease というファイルは存在せず、代わりに
/usr/local/bin/lrelease-qt4 というファイルならありました。

そういえば qmake という基本的なファイルも無く、代わりに qmake-qt4 というファイルで
プロジェクトファイルを生成していました。portsでインストールしたからでしょうか?

こういうエラーで詰んだ場合はどうすればいいでしょうか?

670 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 13:29:25 ]
symbolic link作ればいいだけなんとちゃう?



671 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 14:34:51 ]
手動でシンボリックリンク作成ですかorz・・・

それにしてもportsからインストールするとなぜ実行ファイルは

qmake
lrelease

でなく、

qmake-qt4
lrelease-qt4

なんでしょうか?

672 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 16:55:25 ]
名前がぶつかるから

673 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 16:58:40 ]
え( ´・ω・)?

674 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:14:19 ]
お前がそう思うならそうなんだろう
お前の中ではな

675 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 19:50:54 ]
そうなのか。知らなかった。


676 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 06:57:10 ]
なんでしょうか?

677 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 08:10:06 ]
逝ってよし

678 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 15:48:05 ]
Qtでメモリリークを調べる方法ってどうやればいいんでしょうか?
ttp://www.off-soft.net/ja/develop/qt/qt4.html
このページのやり方試してみましたがリンク時にnewとdeleteが既に定義済み
とか言われてエラーになってしまいます。

679 名前:デフォルトの名無しさん [2010/03/14(日) 17:56:34 ]
>>678
C++用で充分にC++に対応できているメモリリークチェックツールで調べられます。

680 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 19:16:36 ]
レスありがとうございます。
今まではVCに標準で付いていたcrtdbg.hを使うやり方だったのですが、
それだとうまくいかないようだったので。
他にもそういうツールがあるのですね。調べてみます。



681 名前:デフォルトの名無しさん [2010/03/14(日) 21:03:22 ]
WinXP 環境に、
qt.nokia.com/downloads-jp
から Qt SDK: 包括的な開発環境 をダウンロードし、セットアップしました。
Qt Craetor を起動すると、マウスクリックが1回しか効きません。
Qt Creator 以外の部分をクリックすると、1回だけマウスクリックが効きます。

これって回避方法があるのでしょうか?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<177KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef