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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
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】
http://pc12.2ch.net/test/read.cgi/tech/1254366507/
2デフォルトの名無しさん:2010/01/29(金) 15:10:43
■リンク

・Qt Development Frameworks (Nokia社のQt公式サイト)
http://qt.nokia.com/title-jp

・SRA社(日本の代理店)の日本語で読める Qt 関連ドキュメント
http://www.sra.co.jp/qt/relation/index.html

・Qt Users Forum Japan
http://qtusersforum.s2.zmx.jp/forum/index.php


■ライセンス関連まとめ

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

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

*: LGPLは動的リンク時

実際には他にも条件(リバースエンジニアリング関係とか)あるので、
きちんとライセンスの条文を読むこと。
3デフォルトの名無しさん: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
 http://qt.nokia.com/downloads/sdk-windows-cpp

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

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

(1)「Microsoft Visual C++ 2008」(Express Edition 以上) をインストール
(2)「Microsoft Debugging Tools」をインストール(※Qt Creator上でデバッグする時に必要)
 http://www.microsoft.com/japan/whdc/devtools/debugging/installx86.mspx
(3)「Qt libraries for WIndows(VS 2008)」をインストール
 http://qt.nokia.com/downloads/windows-cpp-vs2008
(4)「Qt Creator Binary for Windows」をインストール
 http://qt.nokia.com/downloads/qt-creator-binary-for-windows
(5)環境変数PATHを設定(もともと入ってたパス;Qtインストールパス\bin)
(6)Qt Creator を起動して、「ツール」→「オプション」メニューで初期設定
 「Qt4」→「Qt Versions」を開いて自動検出された「PATH に含まれる Qt」をクリックし「MSVC バージョン」を 9.0 にする
 「デバッグヘルパ」が×印になっていれば「リビルド」ボタンをクリックしてリビルド(※)する
 (※)もし失敗したら「プロジェクト」→「ビルドして実行」→「nmake の代わりに jom を使用する」のチェックを外してみる
4デフォルトの名無しさん:2010/01/29(金) 15:16:28
これもテンプレなのかな

Qt Creator 日本語化プロジェクト
Qt Creator を日本語化するプロジェクトです(非公式)
http://qt-creator-jp.sourceforge.jp/
5デフォルトの名無しさん:2010/01/29(金) 16:41:31
次スレ前にすべりこみで質問です

シグナルをemitする時にnewしたデータを渡すのですが
あとで拡張する際にスロット側でdeleteするのを忘れそうで嫌です
あらかじめ、delete処理をするスロットを作ってconnectしておこう、と考えたのですが
qtはスロットを実行する順序を決めてないそうなので困っています
実行順序を決めるような機能はないでしょうか、あるいはそんなテクニックはないでしょうか
よろしくお願いします
6デフォルトの名無しさん: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デフォルトの名無しさん:2010/01/29(金) 18:58:54
>>5
QSharedPointer
8デフォルトの名無しさん:2010/01/29(金) 19:36:06

>>6

すいません、今日なんとか自己解決しました
9デフォルトの名無しさん:2010/01/29(金) 20:43:23
>>5
コピー可能なデータを渡すようにするのが安全です。
QStringやQPixmapなどはimplicit sharedなので、データ部分は共有して、
intやdoubleと同じ感覚で引渡せるので効率的かつ安全です。
10デフォルトの名無しさん: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デフォルトの名無しさん:2010/01/31(日) 14:08:04
qt4のドキュメント探していると、qt3のドキュメントが沢山出てくるわけですが
qt3のドキュメントはどこまで信用していいのですかね?
つまり、qt4でプログラミングをする時に、qt3のドキュメントをどこまで参照していいのか?と
12デフォルトの名無しさん:2010/01/31(日) 14:28:22
>>1
>LGPL 2.1 または GPL 3.0 のうちどちらかを利用者が選べます。
> LGPL を選んだ場合は商用利用が可能です(いくつか制限あり)。

以前も話題になったけど、これは誤解を生む表現だから消した方が良いと思う。
GPL/LPGL と商用利用は直接的にリンクしている訳ではないからね。
「GPL を選んだ場合は商用利用が可能です(たくさん制限あり)」というだけで。
13デフォルトの名無しさん:2010/01/31(日) 14:34:57
>>12
> 「GPL を選んだ場合は商用利用が可能です(たくさん制限あり)」というだけで。

はLGPLの誤りだよね。

で、どう誤解を生むの?
別にウソ書いてるわけじゃないからいいんじゃないの?
「LGPL を選んだ場合は商用利用も可能です(いくつか制限あり)」
にした方が良い程度の話だと思うが。
14デフォルトの名無しさん:2010/01/31(日) 14:36:52
>>13
>はLGPLの誤りだよね。

違うよ。
15デフォルトの名無しさん:2010/01/31(日) 15:20:29
>>13
> 別にウソ書いてるわけじゃないからいいんじゃないの?
いやウソ書いてるよ。
16デフォルトの名無しさん:2010/01/31(日) 15:21:28
>>11
Qt3についての記述は、気にせず無視して問題ありません。
リファレンスマニュアル (http://doc.trolltech.com/4.6/) にQt3の記述があるのは、
Qt3 Support (http://doc.trolltech.com/4.6/compatclasses.html) だけで、ここにある
クラスは、Qt3からQt4に移行する際に、一時的に使われるクラスで、Qt4で最初からプロ
グラムを書くならば、まったく使う必要がないからです。
17デフォルトの名無しさん:2010/01/31(日) 15:23:15
>>13はGPLを知らなかったのか。。。
18デフォルトの名無しさん:2010/01/31(日) 15:25:05
>>16
わかりました
親切な解説ありがとうございます
19デフォルトの名無しさん:2010/01/31(日) 15:37:09
>>13
>で、どう誤解を生むの?

GPL だと商用利用してはいけないという誤解。
20デフォルトの名無しさん:2010/01/31(日) 15:45:41
>13がフルボッコすぎるwww
2113:2010/01/31(日) 16:32:39
スマソ。>>12の言ってる意味を勘違いしてた。
GPLでもLGPLでも、制限事項が違うだけで商用利用は両方とも可能だっつうこと
だったんだね。叩かないで〜w
22デフォルトの名無しさん:2010/01/31(日) 22:10:26
Qtで使われてるLGPLだとどんな制限があるんだ?

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

こんな感じ?
23デフォルトの名無しさん:2010/02/01(月) 00:16:41
LPGA
24デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/01(月) 12:02:30
商用利用と言っても、委託開発とパッケージ販売で違ってくると思うけどな。
不特定多数に「頒布」するのはGPL/LGPLの制限を受けるけど、
委託されてその顧客専用バージョンを開発するのはほとんど制限をうけないはず
27デフォルトの名無しさん:2010/02/01(月) 12:04:34
「玄箱」のGPLアプリのソースコード配布
リバースエンジニアリングの許可

は、同じこといってるんだよね
フリーウェアで出してもソースの公開義務みたいのは発生するんだろうか・・・(謎
28デフォルトの名無しさん:2010/02/01(月) 15:37:44
>>26
制限を受けないというより、委託の場合は二者間+Nokiaだけの話なので
二者が納得していてNokiaが気にしない/気づかない限りはGPL/LGPLを破っても事実上問題がおきないってことかと

ただし顧客専用バージョンのQtソースを顧客が欲しがった時に
契約や企業間の力関係を傘にきて突っぱねるような明らかなGPL/LGPL違反があると
もし内部告発がおきてネット等を巻き込んだ場合に社会倫理的な問題になると思う
Nokiaは訴訟を起こさないかも知れないけど、問題を解決するために契約を強く勧めるかも知れない
リスク回避するならソースを渡す準備がある旨を伝えるのが無難かと
29デフォルトの名無しさん:2010/02/01(月) 17:02:28
難しいこと考えず素直にライセンス料払えば
何も問題ないような・・・
30デフォルトの名無しさん:2010/02/01(月) 18:35:56
>>27
>委託されてその顧客専用バージョンを開発するのはほとんど制限をうけないはず
顧客と組織が別なら不特定多数への配布と同じ扱いです。
31デフォルトの名無しさん:2010/02/01(月) 18:51:00
顧客が内部利用だけで第三者に配布しないのであればソースを要求できるのは
その顧客だけだから両者で同意がなされれば問題無いと言ってるんじゃないかな?
32デフォルトの名無しさん:2010/02/01(月) 23:16:55
>内部利用だけで第三者

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

完全にインハウスでだけで使うツールなら問題なさそうだが
サード的な別組織に配布る段階で lgpl 発生すると思うの…
33デフォルトの名無しさん:2010/02/01(月) 23:24:02
×別組織に配布る段階で lgpl
○別組織の人間が使用する段階で lgpl

というほうが正確か・・・
34デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/02(火) 01:44:29
だけどLとか関係無くGPLの名がついてたらアリの様に全てのソース出せと群がってくるんだぜ
反論したって無駄なんだぜ
37デフォルトの名無しさん:2010/02/02(火) 05:51:51
そのためにライセンス規定文書を一緒に配布するんじゃないのか?
38デフォルトの名無しさん:2010/02/02(火) 07:29:41
>>36
そんなやついねーよw
39デフォルトの名無しさん:2010/02/02(火) 09:57:34
全ソースの冒頭に入れないと駄目なのかなあれ > ライセンス規定書
エントリポイントだけじゃ駄目ぽ?何かまちまちでよくわからんです・・・
40デフォルトの名無しさん:2010/02/02(火) 10:44:53
ライセンスを書いたテキストファイルを置いておけばOK
ソースの先頭に書くかどうかはコーディングスタイルの問題
1ファイルだけ取り出してもライセンスを間違えないというメリットがある
41デフォルトの名無しさん:2010/02/02(火) 19:48:07
QObject::connect(button, SIGNAL( clieked() ), &app, SLOT(quit()) );
これは、buttonインスタンスのcliecked()メソッド(シグナル)が
appインスタンスのquit()を呼び出しているってことでおk?
42デフォルトの名無しさん:2010/02/02(火) 19:53:03
>>41
違う。
buttonのclicked()がappのquit()を呼び出しているのではなく
buttonのclicked()シグナルがemitされたら
appのquit()が(Qtに)呼び出されるように登録している。
43デフォルトの名無しさん:2010/02/02(火) 20:57:58
>>42
それじゃ、もしもみたい内容だったならば単純にclieked()を実行して終わりってことなんですか?
clieked() {
 if( false ) {
  emit *
 }
}
44デフォルトの名無しさん:2010/02/02(火) 22:08:45
>>43
そのレベルじゃ説明しきれないから下記ページでシグナル/スロットについて学んできて下さい。
http://doc.trolltech.com/4.6/signalsandslots.html
45デフォルトの名無しさん:2010/02/03(水) 00:05:52
Qtのプログラムを作るときってどういう順番で作る?

まずQtとは関係のないコアの部分を組み立てて、その後QtでGUI周りを作る?
46デフォルトの名無しさん:2010/02/03(水) 01:23:30
GUI も本質的には Qt と無関係だから
Qt Designer で .ui ファイル作って Load
47デフォルトの名無しさん:2010/02/03(水) 10:09:22
どんなプログラムかにもよるのでケースバイケースだけど...

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

ハードウェアの制御が絡んでいるような場合には,先ずその制御部分のクラスを作って
おいて,簡単なテストプログラム(GUIはデザインとか無視の超テキトー)を書いてテスト
しておくことが多いかな。それから本物のGUIを作って最後にドッキング。
48デフォルトの名無しさん:2010/02/03(水) 11:58:54
>>45
Qt使う場合はデスクトップアプリしか作らんけども、
データ周り>GUI>MVCでいうコントローラに当たる部分
っていう順で作ってる。
49デフォルトの名無しさん:2010/02/03(水) 12:03:55
>>48
つまり M -> V -> C の順ということですね
ありがとうございます
50デフォルトの名無しさん:2010/02/03(水) 17:36:59
Mac で Qt 使ってる人に質問なんですが
Objective-C で Qt 使えるんですか?
51デフォルトの名無しさん:2010/02/03(水) 20:04:40
Macユーザー関係ないような?
10年くらい前にObj-C Qtバインディングをやった人がいたみたいだけど今はもう無いらしいよ
Python、Ruby、Perl、C#のバインディングはすぐ見つかるけど
更新が活発でQt4.6にもついて行ってるのはPyQt4だけかな
52デフォルトの名無しさん:2010/02/03(水) 20:25:40
>>50
Qt(C++)からObjective-Cなら使えるけどそれじゃダメ?
53デフォルトの名無しさん:2010/02/03(水) 20:59:25
Objective-C++でいいならCocoaとQtを混ぜて使う記事が
http://el-tramo.be/blog/mixing-cocoa-and-qt
54デフォルトの名無しさん:2010/02/03(水) 21:48:39
そこまでするなら wxWidget 系に行くか

java - swt, java - swing 系行くかのほうが
ぜったい楽だと思うの
55デフォルトの名無しさん:2010/02/03(水) 21:51:33
56デフォルトの名無しさん:2010/02/03(水) 22:39:08
>>51
> Python、Ruby、Perl、C#のバインディングはすぐ見つかるけど

C#に関してkwsk
57デフォルトの名無しさん:2010/02/03(水) 22:45:40
ggr C# Qt Bindings
58デフォルトの名無しさん:2010/02/03(水) 23:36:02
>>57
ろくな日本語ソースがひっかからない(´・ω・`)
59デフォルトの名無しさん:2010/02/04(木) 00:06:22
>>58
それはイバラの道だからではw
60デフォルトの名無しさん:2010/02/04(木) 01:44:48
カレンダーコントロールというか
DatePicker みたいなもので
標準的なものはありますか?
61デフォルトの名無しさん:2010/02/04(木) 01:48:09
QCalendarWidget
62デフォルトの名無しさん:2010/02/04(木) 06:38:56
>>58
英語のソースでよいというのが大勢になって来たからではないか。
63デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/04(木) 15:43:59
ok
作れます

次のかたどうぞ
66デフォルトの名無しさん:2010/02/04(木) 18:21:54
Qtって速いの?
67デフォルトの名無しさん:2010/02/04(木) 19:08:49
>>64
それだけよむとQt最強だな。
68デフォルトの名無しさん:2010/02/04(木) 19:10:15
でもC++がちょっとアレな子だからなぁ
69デフォルトの名無しさん:2010/02/04(木) 19:54:32
>>68
それをいうな。
Qtみたいなすごいものが作れるんだぞ。
立派な言語じゃないか。
70デフォルトの名無しさん:2010/02/04(木) 21:31:40
そもそも手段と目的がごっちゃになってて
比較対象がおかしいと思うの・・・ > GUI の選択 と 言語の速さ

別に GUI ライブラリいらないよ > 3Dゲー
71デフォルトの名無しさん:2010/02/04(木) 21:39:00
ネトゲだとチャット機能実装あたりに
少なくとも文字入力に関するライブラリは無いと困る気はする
72デフォルトの名無しさん:2010/02/04(木) 23:19:47
>>68
C++みたいな猛獣を繋ぐ鎖としてはGUI以外でもQtは良い線いってると思うけどな。
いざとなれば鎖を離せるのが猛獣使いQtの強みの一つでもある。ただ自己責任で。
73デフォルトの名無しさん:2010/02/04(木) 23:26:29
>>72
先生!
私の同僚が勝手に鎖を解き放ちました!
74デフォルトの名無しさん:2010/02/04(木) 23:38:14
>>73
動物園から出さないようにお願いします
75デフォルトの名無しさん:2010/02/05(金) 04:15:29
Qt のマクロは C++ なのに Objective-C っぽく見せてくれる側面はあるね
76デフォルトの名無しさん:2010/02/05(金) 06:57:34
>>75
どういうことですか?
77デフォルトの名無しさん:2010/02/05(金) 08:44:57
>>76
たぶんシグナルスロット機構のことじゃね
あんま知らないがCocoaは(C#も)シグナルスロットに似たデリゲートというのをよく使うらしい
マクロってよりqmakeの機能な気がするけど
78デフォルトの名無しさん:2010/02/05(金) 10:18:01
moc
79デフォルトの名無しさん:2010/02/05(金) 14:41:06
クラス名をみてるとどうしてもメロリンQとハイキングウォーキングQ太郎の顔がチラつくんですが、どうしたらいいですか?
80デフォルトの名無しさん:2010/02/05(金) 14:44:10
>>79
メロリンQとハイキングウォーキングQ太郎を見たら
Qtがちらつくようになるまで修行しろ
81デフォルトの名無しさん:2010/02/05(金) 14:56:25
>>80
がんばります!!!
82デフォルトの名無しさん:2010/02/05(金) 15:40:27
なんでQuickTimeと紛らわしい名前にしたんだろう
検索のたびにうざいんだが
83デフォルトの名無しさん:2010/02/05(金) 16:05:36
>>82
-QuickTimeと入れれば多少マシになる。
84デフォルトの名無しさん:2010/02/05(金) 16:30:00
>>83
知らなかったぜ。
そうか、引き算すればいいのか。

85デフォルトの名無しさん:2010/02/05(金) 18:59:05
あんまりかわらん
86デフォルトの名無しさん:2010/02/05(金) 20:54:55
>>82
-QuickTime -twitter
検索ではいつも2つ除外してます
87デフォルトの名無しさん:2010/02/06(土) 00:38:38
Qt Creatorって使い方覚えれば結構勝手が良さそうだな
ぼちぼちメニューも日本語化がすすんできたみたいだし
88デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/06(土) 06:35:16
だれが\を付けてるのかをはっきりさせた方が良い
90デフォルトの名無しさん:2010/02/06(土) 07:41:20
>>87
うん。慣れてくると結構いいよ。今までC++ Builder使ってたけど、「遜色ない」と
までは行かないものの、そんなに不満はない。

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

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

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

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

デバッガの起動時に時間がやたら掛かるのが難点かな...(VC++でcdbの
場合の話)。MinGW+gdbでは最近やってないからどうだったか忘れた。
91デフォルトの名無しさん:2010/02/06(土) 07:51:49
>>88
QProcessが怪しいと思うが
とりあえずsystem()使ってみたらどうだろう
92デフォルトの名無しさん:2010/02/06(土) 10:01:41
>>88
ほぼ同じケースで、結局解決してないのがあるね
http://www.qtcentre.org/threads/11476-arg!!!!-QProcess-on-win32

corelib\io\qprocess_win.cppの問題だと思うなこれ
93デフォルトの名無しさん:2010/02/06(土) 19:38:36
CarbideでQt使ってる人いますか?
CreatorみたいQtのリファレンスを見たいんですが(F1とかで)
できないんでしょうか?
94デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/06(土) 20:04:31
qPrintable( const QString & str )
96デフォルトの名無しさん:2010/02/06(土) 20:10:40
wxスレで質問してたひとかな?
97デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/06(土) 20:25:07
お好きにどうぞ
99デフォルトの名無しさん:2010/02/06(土) 20:26:17
>>97
> 探すより iterator 回して実装した方が早いような気もしますが
天才ですか!?
探すより早いなら実装しろよ

100デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/06(土) 20:40:33
iPhone用のアプリはQtで書けるんでしょうか?
102デフォルトの名無しさん:2010/02/06(土) 20:42:13
>>100
ありがとうございました
参考にします
103デフォルトの名無しさん:2010/02/06(土) 20:50:38
104デフォルトの名無しさん:2010/02/06(土) 20:58:26
>>103
Thx!
105デフォルトの名無しさん:2010/02/06(土) 21:12:21
Qtでもっさりiphoneアプリ
106デフォルトの名無しさん:2010/02/06(土) 21:24:00
Qt iPhone は移植終わってないけどな。
107デフォルトの名無しさん:2010/02/06(土) 21:36:08
Qt on android って今どんな感じ?
108デフォルトの名無しさん:2010/02/06(土) 21:40:34
その前にQt on Dalvikが必要にならんか、それは
109デフォルトの名無しさん:2010/02/06(土) 22:26:40
>>89,91,92
レスありがとうございます。
system関数を使うことで目的の動作を行うことができました。
110デフォルトの名無しさん:2010/02/07(日) 00:41:44
NokiaなのにAndroidとかiPhoneも対応されるのかい?
111デフォルトの名無しさん:2010/02/07(日) 00:53:44
オプソだから対応する人がいれば対応されるだろう・・・
112デフォルトの名無しさん:2010/02/07(日) 02:11:03
ライセンス料ぼったくりのQualcomは倒産しろ
113デフォルトの名無しさん:2010/02/07(日) 13:10:55
>>112
auも巻き添えになってNokiaに買収されるといい。
114デフォルトの名無しさん:2010/02/07(日) 15:07:37
115デフォルトの名無しさん:2010/02/07(日) 15:45:51
>>114
ヲヲヲヲ!?w
これでSymbian、WMは公式で愛ポンと闇泥井戸と全部制覇か
これで本気出してC#からC++に移る勉強するw
116デフォルトの名無しさん:2010/02/07(日) 17:41:45
>>115
> これで本気出してC#からC++に移る勉強するw

C#をマスターしている人間が、あらためてC++で学ぶようなことってあるか?
117デフォルトの名無しさん:2010/02/07(日) 19:13:21
C#は窓でしか使えないじゃん
118デフォルトの名無しさん:2010/02/07(日) 19:29:15
いやそういう意味じゃなくて、C#でオブジェクト指向言語を習得した人が
あらためてC++でオブジェクト指向言語を勉強し直す必要がありますか、って意味ね
119デフォルトの名無しさん:2010/02/07(日) 19:40:52
じゃあ、C#できる人は全員C++マスターだね!!
120デフォルトの名無しさん:2010/02/07(日) 19:48:50
>>119
思わず笑ってしまった
121デフォルトの名無しさん:2010/02/07(日) 19:52:29
>>118
どうみてもC#の方が簡単(つか楽)なんですけど・・・
122デフォルトの名無しさん:2010/02/07(日) 20:49:17
じゃあその簡単とやらのC#をデフォルト言語に採用してよ>Qt
123デフォルトの名無しさん:2010/02/07(日) 21:00:11
124デフォルトの名無しさん:2010/02/07(日) 21:03:40
>>122
C#は窓でしか使えないじゃん
125デフォルトの名無しさん:2010/02/07(日) 22:07:50
んな〜こったない
126デフォルトの名無しさん:2010/02/08(月) 00:18:08
Qtに関していえば、QObjectの秀逸なポインタ管理のおかげで、
QObjectの中でQObject使う場合は自分でdeleteする必要ないんで、
ちょっとしたもの作るだけならガーベッジコレクションしてくれる
メモリ解放不要な言語とそう大きく変わらないんじゃないかなぁ。

QtはC++の機能を最大限に使いつつ、C++の面倒なところをユーザに押し付けないライブラリだと思ってる。
127デフォルトの名無しさん:2010/02/08(月) 00:25:57
ってことはあれじゃね、GUIアプリを組むとき以外もQtって使えるってことじゃね?
128デフォルトの名無しさん:2010/02/08(月) 00:34:51
うんそうだよ
それに気付いてからBoost捨てた
129デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/08(月) 04:39:51
参照にすればいいんじゃね?
131デフォルトの名無しさん:2010/02/08(月) 06:05:20
>>94
QApplication app(argc, argv);
のあとに
QTextCodec::setCodecForCStrings(QTextCode::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
を書き足す
132デフォルトの名無しさん:2010/02/08(月) 11:43:00
>>127
qdbusはQt使ったコンソールアプリだな。
コンソールアプリケーション作るときはQApplicationじゃなくQCoreApplication使うらしい。
133デフォルトの名無しさん:2010/02/08(月) 16:19:00
>>131
訂正
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
134デフォルトの名無しさん:2010/02/08(月) 16:47:14
>>130
やってみます
ありがとうございました!!
135デフォルトの名無しさん:2010/02/08(月) 20:40:51
std::coutに相当する機能を教えてください
136デフォルトの名無しさん:2010/02/08(月) 20:49:28
stdout 用に作られているインスタンスはないので下記のようにして作る。
QTextStream cout(stdout, QIODevice::WriteOnly);
137135:2010/02/08(月) 20:52:19
>>136
ありがとうございます
138デフォルトの名無しさん:2010/02/08(月) 20:54:30
qDebug()を使ってみたのですが何も出力されません
なにかあらかじめ設定しないといけないモードとかあるのでしょうか?
139デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/08(月) 21:22:42
>>139
できました
ありがとうございます

なぜかよく分かりませんが std::cout も使えるようになりました
本当にありがとうございました
141デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/09(火) 01:12:11
動きました
ありがとうございました
146デフォルトの名無しさん:2010/02/09(火) 01:49:36
どっかのサイトでqDebugは日本語使えないって書いてあったのを見た気がするが都市伝説だったのか
147デフォルトの名無しさん:2010/02/09(火) 03:19:38
Qt CreatorってVisual Studioみたいに入力補完とかしてくれる?
たとえばQtのクラス名を補完してくれたり、あるいは自作のクラス、
それに付随するフィールドや関数を補完してくれたりする?
148デフォルトの名無しさん:2010/02/09(火) 03:31:24
する
149デフォルトの名無しさん:2010/02/09(火) 03:36:31
お前は2chよりどっかのわけのわからんサイトを信用するのか
150デフォルトの名無しさん:2010/02/09(火) 03:54:03
Python に eric4 っていう IDE があるんだけど
これって Qt4 の作者と同じ人の作ったもの?
151デフォルトの名無しさん:2010/02/09(火) 03:55:13
>>148
thxノシ

つ〜かそれだったらさ、C++のプログラム組むのにわざわざ金出してVS買うよりも
フリーのQt Creatorを使った方がよくね?
152デフォルトの名無しさん:2010/02/09(火) 04:19:32
>>146
このスレでも前スレのテンプレまではqDebugで日本語ムリってなってたぞ
153デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/09(火) 06:00:36
>>151
動けばいいってんならその考え方でOK
155デフォルトの名無しさん:2010/02/09(火) 06:10:45
>>147
Qt Creatorの補完機能は結構優れものだと思う。
156デフォルトの名無しさん:2010/02/09(火) 06:50:02
Visual C++の奴よりもよくできてるよな。
補完が動かなかったらコードミスを疑うようになるレベル
157デフォルトの名無しさん:2010/02/09(火) 09:23:04
>>155
eclipse版も同レベル?
158155:2010/02/09(火) 11:05:18
使ってないからわからない。使ってる人ヨロシク。
159デフォルトの名無しさん:2010/02/09(火) 11:24:48
>>157
eclipse で使う場合は eclipse が元々持っている補完機能を使うことになる。
SIGNAL や SLOT マクロの中を補完できないので Qt で書く場合には
個人的には Creator の方が楽。
160デフォルトの名無しさん:2010/02/09(火) 20:28:59
Qtと関係なくC++を勉強する人にもQt Creatorは実はおぬぬめじゃね?
161デフォルトの名無しさん:2010/02/09(火) 20:41:36
まじか。
Qt Creatorすげぇ。
162デフォルトの名無しさん:2010/02/09(火) 23:40:44
QtCreator上のデバッグって
なんかウインドウ上部に大きさ変えられないデバッガ出力があるんだが
下にもコンソールあるし邪魔くさくね?
あれ消せないんだろか
163デフォルトの名無しさん:2010/02/10(水) 00:51:30
>>160
そうかい?
基本的なC++から勉強したいからCDTでやってるが
いきなりマクロだらけのOtからだとキツイw
164デフォルトの名無しさん:2010/02/10(水) 00:59:49
Qtはどんどん新機能が付いて更新が楽しいわ
165デフォルトの名無しさん:2010/02/10(水) 01:09:05
これはすごいと思った
166デフォルトの名無しさん:2010/02/10(水) 01:09:45

YouTube - Qt Widgets enter the third dimension: WolfenQt
http://www.youtube.com/watch?v=MXS3xKV-UM0
167デフォルトの名無しさん:2010/02/10(水) 01:16:51
>>163
キツくないよ
楽だろ
そりゃマクロのせいで元々のC/C++の機能かQtの機能かの区別がわからないひとは
あとで知識の再整理が必要になるだけで
今後もQtしか使わないかもしれない訳で困ることじゃない
168デフォルトの名無しさん:2010/02/10(水) 01:19:12
>>165-166
すまんが使い道が思い浮かばん
169デフォルトの名無しさん:2010/02/10(水) 01:31:14
>>166
それかw
すごいとは思うがゲーム以外の何で役に立つのか分からん。
170デフォルトの名無しさん:2010/02/10(水) 01:42:47
単純に技術としてすごいと思った
171デフォルトの名無しさん:2010/02/10(水) 02:00:28
そろそろカウボーイビバップみたいなネットブラウズさせてくれ
172デフォルトの名無しさん:2010/02/10(水) 16:14:57
>>166
すげぇ

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

173デフォルトの名無しさん:2010/02/10(水) 17:11:45
QString::split() でわけるとか
QRegExp を使うとか。
174デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/10(水) 21:14:17
tr()使えよ
176デフォルトの名無しさん:2010/02/10(水) 21:17:32
QTextStream out(stdout);
out.setCodec("UTF-8");
177デフォルトの名無しさん:2010/02/10(水) 21:56:20
テキストデータを一行ずつ保存する関数 WriteLine() があるけど
これを使ってテキストデータを保存するとき、プラットフォームによって
生成されるテキストデータに違いって生じる?

WindowsやUnixやMacで改行に違いがあるって聞いたけど
Qtはそこのところどう対処しているんだろう?
178デフォルトの名無しさん:2010/02/11(木) 00:02:35
やってみよう
179デフォルトの名無しさん:2010/02/11(木) 00:06:51
やりたいけどLinuxしか持ってないんだよな
180デフォルトの名無しさん:2010/02/11(木) 00:07:29
>>177
WriteLineってざっと探しても見つからないんだが、どこの関数?
それはともかく、改行コードって自分で文字列に埋め込むもんだと思うんだが。
181デフォルトの名無しさん:2010/02/11(木) 00:13:03
Python とかだと \n の扱いを LF にするか CRLF にするか選べるよね
CR は論外として
182デフォルトの名無しさん:2010/02/11(木) 00:13:57
tr()使えよ
183デフォルトの名無しさん:2010/02/11(木) 01:00:43
>>180
C#と勘違いしてたスマソ・・・
184デフォルトの名無しさん:2010/02/11(木) 01:19:58
QIODevice::Text 付きでopenすると、"\n"の出力が Unix系では"\n"のまま
Windowsでは"\r\n"に変換される。入力なら逆。
どちらの環境でも同じ改行形式にするなら QIODevce::Textを付けずに
"\n","\r\n"を明示すればいい。
185デフォルトの名無しさん:2010/02/11(木) 03:41:57
>>184
ありがとう。
やっぱ同じQtソースでも動かすプラットフォームによって生成されるテキストファイルに
違いが生じてきたりしちゃうんだね。
186デフォルトの名無しさん:2010/02/11(木) 04:29:15
51のC#バインディングって "Qyoto" って奴か
見た目は悪くない
http://zetcode.com/tutorials/qyotosharptutorial/dialogs/

使い物になるならいいかもな
187デフォルトの名無しさん:2010/02/11(木) 06:18:54
くょーと?

京都?
188デフォルトの名無しさん: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.

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

古いほうのページをみるとわかりやすいけど
gmcs でないと動かない
189デフォルトの名無しさん:2010/02/11(木) 10:09:42
Ubuntu9.10で、Creator1.2.1使ってますが
同時にGEditeなど他のエディタを開いてコピペにて、Creatorに戻って
別のコピペをしても、前のコピーが残ったままでCreatorを一度終了するまで
正常にならナインだけど、
1.3.1では改善されてる?
誰かしらない?
190デフォルトの名無しさん:2010/02/11(木) 10:26:14
>>185
いや同じにもできるし、プラットフォームに合せて変えることもできるということ
191デフォルトの名無しさん:2010/02/11(木) 10:26:41
>>185
いやならバイナリで作るでしょ
コンソールに出力したときだってプラットフォームによってエンコード変わっちゃうんだし
192デフォルトの名無しさん:2010/02/11(木) 10:47:29
>>186
やっぱC#はエレガントでいいなw
193デフォルトの名無しさん:2010/02/11(木) 12:09:55
むしろQtを使った場合 C++ と C# の違いがほとんど感じられない気がする
194デフォルトの名無しさん:2010/02/11(木) 12:34:59
C#なら.netのクラスを使える。これは非常に大きな違い。
あとWindowsじゃないとまともに動かない所とか。
Monoってどこまで.Netに追いついてたっけ?
195デフォルトの名無しさん:2010/02/11(木) 12:38:48
クロスプラットフォームのフレームワークを
わざわざMS固有の言語で使うなんて馬鹿
196デフォルトの名無しさん:2010/02/11(木) 13:23:50
>>193
LINQがあるじゃないか!!
・・・と思ったら2.0限定なのか

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

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

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

俺も↑のサイトで見てついさっき知ったんだけど
monoってREPLが付属してるんだね
REPL目当てでWindowsに入れてもいいかもしれない
197デフォルトの名無しさん:2010/02/11(木) 13:25:31
ネイティブコードを吐かせてこそ意味がある
198デフォルトの名無しさん:2010/02/11(木) 15:55:43
iPhone向けMonoがネイティブを吐くんだよな
ただ、MacOS必要なのとツールが優良なのがネック
199デフォルトの名無しさん:2010/02/11(木) 17:07:06
WMターゲットで開発するときって結局VS付属のWM用コンパイラが必要なんだよね?
200デフォルトの名無しさん:2010/02/11(木) 18:32:45
CeGCC が使える
Qt for Windows CE がCeGCCでコンパイルできるかは知らないが
201デフォルトの名無しさん:2010/02/11(木) 21:06:25
>>196
REPL目当てならipython+PyQtって手もある
Pythonxyが全部まとめて入ってておすすめ
202デフォルトの名無しさん:2010/02/11(木) 21:09:48
C++で分割ソースをコンパイルするときは、まず各.cppファイルをコンパイルしてオブジェクトファイルを生成し、
できたオブジェクトファイルを最後にリンケージするという手順が必要なわけだけど、それをQtを使って
プログラミングするとなるとその手順はどうなるの?
203デフォルトの名無しさん:2010/02/11(木) 21:11:39
qmakeがMakefileを自動生成するから
そこら辺はあまり気にしなくていい
204デフォルトの名無しさん:2010/02/11(木) 21:15:44
はじめてQtを入れて触り始めています。
Qt creatorの完成度が高くて驚きました。
ただビルドに時間がすごく掛かるんですが何か間違っているんでしょうか?
hello worldだけでビルドに数十秒もかかっています。
使っているのはWindowsのmingw32版です。
205デフォルトの名無しさん:2010/02/11(木) 21:35:25
>>202
同じ
というか Qt だと moc とか uic とかの手順も増える
しかし >>203 の言うとおりだから気にすんな
206デフォルトの名無しさん:2010/02/11(木) 21:36:46
>>204
PC のスペックくらい書け
207デフォルトの名無しさん:2010/02/11(木) 22:00:27
>>202
$ qmake -project
$ qmake
$ make
終わり
208デフォルトの名無しさん:2010/02/11(木) 22:03:39
まぁしかし
なんでもおまかせでうまくいくのは最初のうちだけなんだよな
209デフォルトの名無しさん:2010/02/11(木) 22:17:42
>>206
ごめんなさい。Core 2 Duo P8800 + Windows 7です。
210デフォルトの名無しさん:2010/02/11(木) 22:33:12
Qtの初回ビルドは時間かかるね
普段のビルド(ソースファイル2〜3個修正したとか、UIだけいじったとか)ならすぐ終わるんじゃない?
211デフォルトの名無しさん:2010/02/11(木) 22:33:44
ちょっとお聞きしたいのですが
qtやるならc++から勉強したほうがよいですか?
それともqtプログラミングの本かって触りながらやってもいける感じでしょうか
fortran畑なのですがguiプログラミングやる必要がでてきていろいろ探しているのですが
すいませんがよろしくお願いします
212デフォルトの名無しさん:2010/02/11(木) 22:34:11
書いてるコードの種類にも寄るような気はするが
xtal をコンパイルboost呼び出しお茶を飲むような系統なら
時間はかかっても不思議でないし・・・
213デフォルトの名無しさん:2010/02/11(木) 22:37:23
>hello worldだけでビルドに数十秒もかかっています。

ごめんよく読んでなかったわorz
214デフォルトの名無しさん:2010/02/11(木) 22:41:23
>>211
http://zetcode.com/

ここ見ながら自分に合いそうなわかりやすそうだと
思うのから探してみるとか・・・
215デフォルトの名無しさん:2010/02/11(木) 22:42:28
>>211
QtCreatorインストールしてチュートリアルとかのソース見て
分かれば勉強する必要ないんじゃない?
ちなみにおいらは「ロベールのC++教室」でC++から勉強中
216デフォルトの名無しさん:2010/02/11(木) 22:43:34
>>207
> $ qmake -project
> $ qmake
> $ make
> 終わり

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

実行速度とか余り関係なくて簡単に余り凝ってないGUIプログラムを作ってみる
のなら、Python+EasyGuiあたりから始めてみたら?
218デフォルトの名無しさん:2010/02/11(木) 22:56:26
一年ぶりにうpでーとしたら、QPainterあたりの実装が変わって
気軽にドット打てなくなってたorz
drawPoint()では1x1サイズのドットしか描けね。泣けた。
代わりにfillRect()使うことにしたがマンドクセ('A`)
219デフォルトの名無しさん:2010/02/11(木) 23:00:09
いや、チュートリアルだけでも結構行ける
とりあえずやってみれば?
言語でわかんないところが出てきたら
その都度ググればいいだけのこと
220デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/11(木) 23:12:17
>>219
甘いんじゃない?
ググってばかりでなかなか先に進まず、そのうちイヤになってくる可能性大。
222デフォルトの名無しさん:2010/02/11(木) 23:19:27
QStringとかは重要なクラスなので、暗黙的に#includeしてくれるっぽいですね
他にどんなクラスが、暗黙的な#includeをされているんですか?
223デフォルトの名無しさん:2010/02/11(木) 23:26:00
QtCoreのなかのモジュール。QStringもそう。
224デフォルトの名無しさん:2010/02/11(木) 23:29:51
>>214,215,217
ありがとうございます。とりあえずインストールして触ってみます
土日に紹介していただいた本も立ち読みしてみます
c++ってメジャーっぽいので覚えておいて損もなさそうなので、
これを機会に勉強してみようとも思います
ありがとうございました
225デフォルトの名無しさん:2010/02/11(木) 23:32:26
>>211
http://www.harukaze.net/~haruka/wxpython/index.html

数値計算畑だと wx 系のほうが手取り早いと
思うんだが何で c++ で組みたいの?という疑問も
226デフォルトの名無しさん:2010/02/11(木) 23:34:01
>>214

http://zetcode.com/tutorials/qt4tutorial/utilityclasses/

コンソールアプリもQtのライブラリ使うとこんなに簡単になるんだな。
ちょっとしたC++のプログラムを書く際もQtを積極的に活用した方がいいんじゃね?
227デフォルトの名無しさん:2010/02/11(木) 23:37:29
内部で速度が要求される部分 C++
ガワの部分は python , ruby などで

みたいのほうがメンテは楽だと思うぞ
適材適所使い分けりゃいいのよ… C++ +α
228デフォルトの名無しさん:2010/02/11(木) 23:40:50
>>216
proファイルはあとから手書きで書き換えるから
qmake -project と qmake がくっついてると困るわ
229222:2010/02/11(木) 23:48:23
>>223
Qt creatorでプロジェクトを作る時に、どれをインポートするかって質問されるじゃん
あれでチェックすると暗黙的に#includeしてくれるの
それとも、Qt Coreだけなの?
230デフォルトの名無しさん:2010/02/12(金) 00:00:16
もちろんカリカリに組んだらC++よりCが速くなる可能性はあるが
メモリ潤沢という前提ならC++の方が速いものができることが多いな
231デフォルトの名無しさん:2010/02/12(金) 00:02:21
>>C++よりCが速くなる
例えばどんなコードで?
232デフォルトの名無しさん:2010/02/12(金) 00:13:30
http://kagamikohime.blog118.fc2.com/blog-entry-1353.html
http://d.hatena.ne.jp/ousttrue/20091204/1259888475

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

というかゲーム畑とか物理演算とかはやっぱりC++で組まれることは多いやね・・・過去の資産もあるし
233デフォルトの名無しさん:2010/02/12(金) 00:29:16
>>232
>pythonにしたおかげでOpenGL部分はわりとさくさくだが、SJISとUTF-8の混在が面倒くさいことに。
慣れてないとこうなる例
234デフォルトの名無しさん:2010/02/12(金) 00:30:19
>>216
俺は別ファイルに追記する分を書いて、シェルスクリプトでproファイルとくっつけてmakeまでやらせてる。
235デフォルトの名無しさん:2010/02/12(金) 00:31:45
236デフォルトの名無しさん:2010/02/12(金) 00:43:29
>>235
>使用言語:C++(DXライブラリ)

よしDXライブラリだ!
ホビーユースでも C++ は利用され(ry
237デフォルトの名無しさん:2010/02/12(金) 00:44:46
CよりC++の方が遅いというほうこそ理解できん。
どちらだってポインタ使えるわけだし。
238デフォルトの名無しさん:2010/02/12(金) 00:45:38
>>237
クラス作るとCと比較したときに色々と見えない処理が入るからじゃ?
239デフォルトの名無しさん:2010/02/12(金) 00:47:47
ライブラリのリンクは C の方が速いと思われ
プロセスの起動も C の方が速いと思われ
240デフォルトの名無しさん:2010/02/12(金) 01:00:35
アホは無理してレスしなくていいと思われ
241sage:2010/02/12(金) 01:09:37
QActionにicon入れるとメモリリーク起こすんだけど。
242デフォルトの名無しさん:2010/02/12(金) 01:43:15
C++は最悪C言語の95%程度のロスに抑えるように設計されている


ってドエライ人が言ってた
243デフォルトの名無しさん:2010/02/12(金) 01:54:43
>>237
ある処理を、C++の機能を使って「エレガントに」実装した時の実行速度と、
Cでカリカリ実装した時の実行速度の、一般的な違いのことだと思うよ。
同じように書いたものには勿論そんな違いは無いし、一つ一つ見ていけばqsortとsortみたいな
逆になりうる例もあるし、とりあえずそんな厳密な優劣の話ってわけではない、はず。
244デフォルトの名無しさん:2010/02/12(金) 02:12:44
>>220
ありがとうございます。
プリコンパイルヘッダー、gccでも使えるんですね。
あとで試してみます。
245デフォルトの名無しさん:2010/02/12(金) 02:20:03
vcのコンパイラだと何も設定しなくても速いな
246デフォルトの名無しさん:2010/02/12(金) 03:33:24
Qt Creatorの拡張がしたいけど
どうやればいいんだろう?
247デフォルトの名無しさん:2010/02/12(金) 03:47:36
「入門Qt4プログラミング」に書いてある
248デフォルトの名無しさん:2010/02/12(金) 06:38:55
       ∧∧   コイヤァァァァ!!
       (д´* )
       (⊃⌒*⌒⊂)
        /__ノωヽ__)
249デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/12(金) 16:13:10
>>250
Assistant をカスタマイズしなくても Qt Help モジュールが使えるはず。
http://qt.nokia.com/doc/4.6/qthelp.html
http://qt.nokia.com/doc/4.6/qthelp-framework.html

htmlのオープンには QDesktopServices::openUrl() を使えばいい。
urlだけの調整で他のプラットフォームでも使える。
252250:2010/02/12(金) 16:49:33
>>251

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

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


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

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

素早いご回答ありがとうございました。
253デフォルトの名無しさん:2010/02/12(金) 17:16:05
>>252
QtWebKit を使って html を表示する方法もあるよ。
254250:2010/02/12(金) 17:46:47
>>253

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

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

ありがとうございました。
255デフォルトの名無しさん:2010/02/12(金) 21:42:29
QApplicationにコマンドライン引数を渡していますが、
デフォルトではどのような処理がなされているのでしょうか?
256デフォルトの名無しさん:2010/02/12(金) 21:52:57
applicationDirPath()、applicationFilePath()、applicationName()の元に使ったり、
当然arguments()で取得できるQStringListに格納するのに使ってるんジャマイカ?
257デフォルトの名無しさん:2010/02/12(金) 22:01:54
>>255
せっかく読みやすいドキュメントがあるんだから気になったら読もうぜ。
ttp://doc.trolltech.com/4.6/qapplication.html#QApplication
>>256の動作に加えて、QtのGUIスタイルとデバッグに関する引数を自動で処理してくれるみたいだな。
258デフォルトの名無しさん:2010/02/12(金) 22:03:19
>>256-257
thx
259デフォルトの名無しさん:2010/02/12(金) 22:59:43
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());と
tr()を使うのはどちらが賢明な判断なのでしょうか?
260デフォルトの名無しさん:2010/02/12(金) 23:06:28
QTextCodec::setCodecForCStrings()はQStringが入力として受け付ける(const)char*の文字コード。
QTextCodec::setCodecForTr()はtrが(ry
26126:2010/02/12(金) 23:46:34
俺はQString::fromUtf8();
262デフォルトの名無しさん:2010/02/13(土) 00:17:49
前出のandroid-lighthouse試した奴いる?
263デフォルトの名無しさん:2010/02/13(土) 01:11:29
>>259
それぞれ別の処理だから両方必要
264デフォルトの名無しさん:2010/02/13(土) 01:12:19
>>260
入力のときだけじゃないから注意
265デフォルトの名無しさん:2010/02/13(土) 01:20:31
qtcreatorでコンソールプロジェクトを実行した時に
プログラムを手動で終了させてるんですけど、
処理が終わったら終了できるようにできませんか?
266デフォルトの名無しさん:2010/02/13(土) 01:59:23
>>265
処理が終わったら QCoreApplication::quit() を呼び出せばいい。
イベントループが不要ならそもそも QCoreApplication::exec() を呼ばなければいい。
267デフォルトの名無しさん:2010/02/13(土) 02:13:32
>>264
入力の時だけじゃないだと・・・
他にいつこれ絡むの?
入ってくる文字コードこれだぞーって教えてるだけじゃないの?
268デフォルトの名無しさん:2010/02/13(土) 02:18:49
え?
269デフォルトの名無しさん:2010/02/13(土) 02:24:40
>>265-266
QCoreApplication app(argc, argv);
コンソールのみ使用するプログラム
app.quit();
return app.exec();

この順番でOK
270デフォルトの名無しさん:2010/02/13(土) 02:25:43
>>267
toAscii() とか
271デフォルトの名無しさん:2010/02/13(土) 02:40:03
>>268 >>270
Qt使い始めた頃に必死こいて得た知識を信じきった結果がこれだよ!
言われてからドキュメントTextCodec::setCodecForCStringsの項を見たら
convert to and fromとか書いてあるから泣きたくなった。
指摘さんくす
272デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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

http://lists.trolltech.com/qt-interest/2008-02/thread00916-0.html
276デフォルトの名無しさん:2010/02/13(土) 11:02:00
>>274

>>176

出力はQTextStreamだろ常考
277デフォルトの名無しさん:2010/02/13(土) 11:07:10
Windows版のQt Creatorはキーの反応悪くて使いにくい。なんで皆文句言わないんだろう
ってずっと思ってたんだけど、無変換キーを押すと次のキー入力が無視されることに気づいた
変換−無変換でIME切り替えてるから困るなあ
278デフォルトの名無しさん: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.
http://doc.trolltech.com/4.3/qt.html#ConnectionType-enum
279デフォルトの名無しさん:2010/02/13(土) 11:26:48
>>277
ソースに日本語は使わずに国際化リソースで対応しよう
280デフォルトの名無しさん:2010/02/13(土) 11:42:42
>>279
なるほ・・・ど?いやでも日本語でコメント書きたいよw
281デフォルトの名無しさん:2010/02/13(土) 11:56:24
俺は外部エディタ登録して使ってる。
でもQt Creatorのエディタは日本語入力以外そんなに悪くないと思う。
折り畳み機能は邪魔なのでOFFにしてるけど。
最初、「わ、関数の中身が全部消えた」とか勘違いしたw

カッコや""の自動補完も最初は余計なお世話だと感じたけど、
慣れるとそうでもないね。
282デフォルトの名無しさん:2010/02/13(土) 12:52:07
あーごめん>>277はQtCreatorがダメみたいに書いちゃったが
無変換キーのせいでダメだと思ってただけで、他は問題ないんだ
まあ外部エディタでいいんだけど、自動補完がよくできてるからもったいないなと
283デフォルトの名無しさん:2010/02/13(土) 12:55:53
>>278
それでも
void MyClass::doSometiong() { done(); }
って定義したら、やっぱり終了しないみたいだから
QCoreApplication::exec()より後で呼び出されることを保障する手段としては
タイマーイベントを使うのが一番簡単なんじゃないかと思う
execした直後に自動で呼び出されるsignalがあればそれを繋げばいいんだけどさ
リファレンス見る限りそんなものは無いようなんで困ったもんだなぁと
284デフォルトの名無しさん:2010/02/13(土) 14:03:55
そもそもなんのためにexec()呼び出すん?
285デフォルトの名無しさん:2010/02/13(土) 14:51:13
コマンドの実行本体の流れ自体はコンソールで充分なんだけど
エラーのときだけメッセージボックス出したいとか


やってみたら
QWindow だけ作って メッセージボックスにハンドル渡して
app.exec() 呼ばなくてもちゃんと動いたわ w
286デフォルトの名無しさん:2010/02/13(土) 14:54:53
>>283
>void MyClass::doSometiong() { done(); }

Q_OBJECT 書いてる?
287デフォルトの名無しさん:2010/02/13(土) 14:56:22
>>286
書いてるよー
じゃないとmocに怒られるし
288デフォルトの名無しさん:2010/02/13(土) 15:04:21
moc って qmake 実行し直しだよね
289デフォルトの名無しさん:2010/02/13(土) 15:07:02
void MyClass::doSomething(){ emit done(); }
290デフォルトの名無しさん:2010/02/13(土) 15:33:54
>>220
試してみたところWindowsのMingw環境でもプリコンパイルドヘッダーが使えました。
debugディレクトリ以下にstable.h.gchというディレクトリができていたので
ちゃんと機能しているようです。
コンパイル速度の変化は正確にはわからないですが、
もっとたくさんヘッダファイルを使う場合には差が出るのではと思います。
291283:2010/02/13(土) 16:01:02
こんな感じです
http://www.dotup.org/uploda/www.dotup.org650392.zip.html
トレースしてみましたが明らかにexec()より先にdone() -> quit()が呼ばれてます
292220:2010/02/13(土) 21:38:02
>>290
俺はVCだけど。プリコンパイルドヘッダー使ったら、コンパイルが劇的に速くなった。
QApplicationとQtGuiをプリコンパイルの対象にしたから、殆どすべてのヘッダーが
プリコンパイルされて巨大なファイルが出来上がったけどねw

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

あんまりほめられたことじゃないけど、カットアンドトライ的にソースをホイホイ
書き換えてはデバッガーで動かしてテストしてみるのはちょっと苦痛。
293デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/14(日) 01:58:36
いや、GUI作らない場合の話をしてるんだから、
QApplication app(argc, argv);
じゃなくて、
QCoreApplication app(argc, argv);
でないと反則。

っつーかそもそも、>>284さんの指摘にもあるが、
app.exec();
を呼ぶ動機が微妙。
ひょっとしてネットワークとかタイマーとか、
どっかでイベントループ回す必要がある、
ってことなら判らんでもないが。
297デフォルトの名無しさん:2010/02/14(日) 02:46:20
298デフォルトの名無しさん:2010/02/14(日) 14:28:49
シグナルとスロットで引数がある場合、どちらも同じ値が入ってくるのですか?
299デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/14(日) 18:39:44
>>299
ありがとうございます
301デフォルトの名無しさん:2010/02/14(日) 19:32:53
Qt Creatorで「void Hoge::Hoge() F1」みたいなポップアップでてくるじゃん
あれってどこで消すのよ?
302デフォルトの名無しさん:2010/02/14(日) 20:05:36
ESCキー
303デフォルトの名無しさん:2010/02/14(日) 20:49:49
Qt CreatorをFreeBSDにインストールしたいんだけどpackageで提供されていたっけ?
304デフォルトの名無しさん:2010/02/14(日) 22:38:57
>>303
あるよ
devel/qtcreator
だったかな
305デフォルトの名無しさん:2010/02/15(月) 01:30:11
>>304
thx

それ入れればたぶん依存でQt本体も勝手にインストールされるよね(´・ω・`)?
306デフォルトの名無しさん:2010/02/15(月) 05:54:11
QNetworkAccessManagerが送信するリクエストヘッダフィールドの順番って変えられないんでしょうか?
それとヘッダに強制的に追加される不要な項目を消すことはできますか?
リクエストだけ直に書ければ助かるんですけど・・・
307デフォルトの名無しさん:2010/02/15(月) 09:13:00
>>305
もちろんですとも
308デフォルトの名無しさん:2010/02/15(月) 10:53:03
>>306
QNetworkRequestで出来る操作だけで不満ならQTcpSocket使ってはいかがか。
309デフォルトの名無しさん:2010/02/15(月) 16:45:19
去年のイベントのビデオとpdfが出てる。
ttp://qt.nokia.com/resources-jp/Japanese_elearning/qt-conference-tokyo-2009-videos
310デフォルトの名無しさん:2010/02/15(月) 17:08:40
>>306
ヘッダーはユーザが追加した順番になるはず。

自動的に追加されるヘッダーは送出の直前で追加されるので削除は無理っぽい。
空かどうかをチェックして追加しているので自前のものに置き換えることは可能。
311デフォルトの名無しさん:2010/02/15(月) 21:36:17
http://meego.com/
moblin と maemo をマージした Linux & Qt ベースの
mobile向けディストリビューションらしい。
312デフォルトの名無しさん:2010/02/15(月) 23:07:50
Qt 4.6.2
313デフォルトの名無しさん:2010/02/15(月) 23:20:24
QtCreatorでFramework Onlyの方の全てのプラットフォームいけます?
314デフォルトの名無しさん:2010/02/15(月) 23:27:04
Qt 4.6.1入れたばかりだぞ、ゴラァ
315デフォルトの名無しさん:2010/02/15(月) 23:30:08
一ヶ月弱でバージョンアップかよw
316デフォルトの名無しさん:2010/02/15(月) 23:33:08
4.6だったか4.6.1だったかをこの前入れたばかりですが・・・
317デフォルトの名無しさん:2010/02/15(月) 23:33:13
入れ替えるのそんなにめんどくないからいいじゃん。
何なら鍼灸療法入れといたって医院だし。
318デフォルトの名無しさん:2010/02/16(火) 02:09:43
4.6.1入れたばっかなのに4.6.2入れるのマンドクセ
319デフォルトの名無しさん:2010/02/16(火) 11:43:58
メインウインドウはどうやって作っていますか?
やっぱり、手書きか
320デフォルトの名無しさん:2010/02/16(火) 11:46:37
designerで作ってる。
321デフォルトの名無しさん:2010/02/16(火) 20:57:05
臨機応変に
322デフォルトの名無しさん:2010/02/16(火) 21:18:14
Windows版のQtCreatorってどうやってバージョンアップしてる?
一度クリーンアンインストールしてから再度インストールしなおす?
323デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/16(火) 21:45:37
test.proにQT += webkitが書いていないと、コンパイラに怒られるんですが
何してんですか?これ
325デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/16(火) 21:53:01
>>322
普通に旧版アンインストールしてから新しいのインストールすれば問題ないよ。

設定は自分のプロファイルフォルダの下(C:\Documents and Settings\(ユーザー名)
\Application Data\Nokia)に保存されてるから、消される心配しなくて大丈夫。
327デフォルトの名無しさん:2010/02/16(火) 21:53:20
>>324
ソースの方で webkit 使ってるんだろ
328デフォルトの名無しさん:2010/02/16(火) 22:03:10
というか何が変わったん4.6.2...
329デフォルトの名無しさん:2010/02/16(火) 22:03:53
>>324

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

QT は使用するモジュール(ライブラリ)の指定。>>327の言うとおり、QtWebKit使ってるから
だと思われ。
330デフォルトの名無しさん:2010/02/16(火) 22:17:30
331デフォルトの名無しさん:2010/02/16(火) 22:21:23
>>297
そうなんだ
「入門Qt4プログラミング」の FTP / HTTP だと
exec() でイベントループ回さないといけないと書いてあった
332324:2010/02/16(火) 22:30:18
>>327,329
ひとまず、qmakeの勉強をしてみることにします
333デフォルトの名無しさん:2010/02/16(火) 22:35:03
qt creatorでMainWindowを作っているわけなですが、
メニュバーは自分でシコシコ手書きするしかないんですか?
334デフォルトの名無しさん:2010/02/16(火) 22:45:44
>>333
ウィンドウの左上に「ここに入力」って書かれてるところをクリックして、&File とでも
入力してごらんよ。

コンテキストメニュー(ポップアップメニュー)は手書きするしかないけど。
335デフォルトの名無しさん:2010/02/16(火) 22:47:09
↑ごめん。ダブルクリックだった。
336デフォルトの名無しさん:2010/02/16(火) 22:50:24
>>326
ありがとう。
それならバージョンアップも楽だね('A` )b
337333:2010/02/16(火) 22:55:30
>>334
最後にエンター押さなきゃ行けないんですね、
Visual Studioだとエンターを押さなくてもよかった(俺の記憶では)ので気がつかなかった

ありがとう
338323: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/17(水) 13:50:31
makeしなくてもmsysとQtで別々にMinGWがある状態でやってればいいんじゃ?
共存できないのかな
343デフォルトの名無しさん:2010/02/17(水) 14:14:46
できる
344デフォルトの名無しさん:2010/02/17(水) 15:20:08
qt4.6.2はバグフィックス集みたいだから
余計な苦労したくなければ入れておく方がよさげだね
345デフォルトの名無しさん:2010/02/18(木) 00:21:55
QtCreatorってVCみたいなドッキングウィンドウにならないのかなぁ・・・
346デフォルトの名無しさん:2010/02/18(木) 00:22:52
なるよ
347デフォルトの名無しさん:2010/02/18(木) 20:22:21
qtってSIGNALとSLOTがあるから例外を投げてこないのかな〜
348デフォルトの名無しさん:2010/02/18(木) 21:18:41
とあるソフトではQApplicationを継承したクラスに、
public + staticなメンバ変数を宣言していました

お前らは、QApplicationをどんな感じで使ってますか?
349デフォルトの名無しさん:2010/02/18(木) 22:13:08
「入門Qt4プログラミング」誤字脱字多すぎね?
ソースにまでバグがあるw
350デフォルトの名無しさん:2010/02/18(木) 22:30:39
>>346
Designerの方はなるんだね
プラグイン追加すればいいのかな?
でも自動的に開いたり閉じたりはしないよね?
351デフォルトの名無しさん:2010/02/19(金) 01:04:30
>>348
そのまま使ってる。
352デフォルトの名無しさん:2010/02/19(金) 03:28:11
QCoreApplication でコンソールアプリ書けるのは判ったけど
Windows 用の DLL って Qt ではどうやって作るの?
353デフォルトの名無しさん:2010/02/19(金) 03:36:33
コンパイラの成果物がDLLなのかEXEなのかと
Qt使ってるかどうかは関係ないよ。
354デフォルトの名無しさん:2010/02/19(金) 06:51:59
>>352
qmake の .pro で、TEMPLATE = lib
355デフォルトの名無しさん:2010/02/19(金) 06:59:42
>>353-354
ありがとうございます
Win32API とかだと DLLMain を書かないといけなかったりするのは
Qt だとどう書くのかなと思ったのです
356デフォルトの名無しさん:2010/02/19(金) 07:48:19
その辺りも含めてやってくれる。
同じソースから、*NIXならlibXXX.soが、WindowsならXXX.dllが作られる。
357デフォルトの名無しさん:2010/02/19(金) 11:42:20
ダイアログベースでWindowsのイベントを自分で処理している
レガシーなアプリケーションの改修を任されたのですが、
新規に追加するダイアログだけ Qt を使うことは可能ですか?
358デフォルトの名無しさん:2010/02/19(金) 18:54:13
QHttp 使って 2ch に書き込みしたいんだけど
cookie とか session 用のメソッドが全然見つからない
このあたりのを自分で作らないとだめなのかな
359デフォルトの名無しさん:2010/02/19(金) 20:02:35
QNetworkCookie
360デフォルトの名無しさん:2010/02/19(金) 21:09:28
FreeBSDにパッケージからQtCreatorをインストール。
無事起動までこぎつけたけどなぜかコンパイルの段階になって
「Qtの本体が無いよ」と言われてコンパイルできず。

あるぇ〜?
言われてみれば qmake とコマンドラインで打ち込んでも認識されないな・・・
パスがきちんと通ってないのかな?
361デフォルトの名無しさん:2010/02/19(金) 21:14:15
ここはお前の日記帳じゃ(rt
362デフォルトの名無しさん:2010/02/19(金) 21:47:14
>259
thx!!
363デフォルトの名無しさん:2010/02/19(金) 22:00:15
>>362
アンカを間違えてるがな( ^ω^)
364デフォルトの名無しさん:2010/02/20(土) 01:12:12
Mac Portsからqt4インストールして出来たqtdemoを起動すると
いつの間にやらまっしろなウィンドウしか表示されなくなってしまったんだけど、他に同じ症状の人いないかな?
ビルド&起動環境は64bitカーネル、64bit版のqt
発生するバージョンはここ最近の5バージョンぐらい?

365デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/20(土) 09:47:44
>>359
QNetwork を見ると QHttp とほとんど同じメソッドっぽいんですが
QNetwork の方が高機能で QHttp は obsolete ってことですか?
367デフォルトの名無しさん:2010/02/20(土) 11:47:45
368デフォルトの名無しさん:2010/02/20(土) 14:25:13
FreeBSDにパッケージからQt4をインストールしたんだけど

> qmake -project

まではおkだけど、次の

> qmake

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

たんにパッケージからインストールしただけじゃダメなの?
他にどんな設定をする必要がある?
369デフォルトの名無しさん:2010/02/20(土) 14:58:55
当然QMAKESPECについてググってみたんだよな?
370デフォルトの名無しさん:2010/02/20(土) 15:06:28
ググったけど通販のページしか出てこない
371デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/20(土) 16:52:38
濃厚なゆとり臭がする
373デフォルトの名無しさん:2010/02/20(土) 17:12:24
>366
thx!!
374デフォルトの名無しさん:2010/02/20(土) 17:23:03
obsolete なクラス(というかヘッダー)使ってたら
qmake 時か make 時に warning 吐いてくれてもよさそうなきがする
375デフォルトの名無しさん:2010/02/20(土) 17:31:17
>>372
インストールすべきものは全てインストールしたんだがな(´・ω・`)・・・
376デフォルトの名無しさん:2010/02/20(土) 18:11:31
377デフォルトの名無しさん:2010/02/20(土) 18:12:45
>>371
おまい C は初めてか?力抜けよ
378デフォルトの名無しさん:2010/02/20(土) 18:15:20
>>371
FreeBSD の ports は充分テストされないでリリースされるのが常識
379デフォルトの名無しさん:2010/02/20(土) 18:31:21
エラーから想像するにincludeパスが通ってないとかかな
380デフォルトの名無しさん:2010/02/20(土) 19:05:14
本家からWindows用のSDKをダウソしてきてXPマシンにインストールしたんだが
ルートフォルダにinstall.iniだのinstall.res.1031.dllだのeula.1041.txtだのファイルを
てんこ盛り作ってくれやがった。

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

いずれにせよちょっとお行儀悪すぎないか?
381デフォルトの名無しさん:2010/02/20(土) 19:43:09
>379
そんなのは判り切ってるんです
packageから入れたのに自動でincludeパスの設定がされなかったことを問題にしてるんですよ!!
382デフォルトの名無しさん:2010/02/20(土) 19:45:52
>>380
うちはそんなもの作られなかった
ひょっとしてインストール先を
C:\Qt じゃなくて
C:\ にしたんじゃないの?
383デフォルトの名無しさん:2010/02/20(土) 19:58:50
>>382
いやインストール先をいじった覚えは無いんだが
384デフォルトの名無しさん:2010/02/20(土) 20:16:07
385デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/20(土) 20:32:15
>>379
includeはきちんとやってるよ。

#include <QtGui/QApplication>

ってな感じで。もちろん

#include <QApplication>

も試してみたがこれもダメだった。
387デフォルトの名無しさん:2010/02/20(土) 21:18:35
>>386
エラーから想像するにincludeパスが通ってないとかかな
388デフォルトの名無しさん:2010/02/20(土) 21:55:56
>>385
サンクス、消してくるノシ
389デフォルトの名無しさん:2010/02/20(土) 21:59:03
QLocalSocket
http://doc.trolltech.com/main-snapshot/qlocalsocket.html

このクラスの説明と実際にかかれているコードを読んだんだけど、
何をしているのかわからない
誰か教えてくれ
390デフォルトの名無しさん:2010/02/20(土) 22:01:09
>>389 さん、コップンカー(´∀`)
391デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/20(土) 22:04:29
>>389
プロセス間通信でぐぐれ
393デフォルトの名無しさん:2010/02/20(土) 22:06:19
>>387
同じソースをQtCreatorを通してビルド&実行すると問題なく通る。
コンソールからコマンド直打ちじゃmakeの段階でエラーが返ってくる。
どゆこと(・ω・)?

> qmake -project
> qmake
> make

で問題ないはずだよな?
394デフォルトの名無しさん:2010/02/20(土) 22:14:38
>>392
感謝
395デフォルトの名無しさん:2010/02/20(土) 23:08:44
今起きたことをありのまま言うぜ・・・

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

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

何を言ってるのか分からないかも知れないが俺もどういう事態に巻き込まれたのかよく分からない。
何か尋常じゃないことが起きていることだけは確かだ。。。
396デフォルトの名無しさん:2010/02/20(土) 23:21:37
qmake -projectで作り直したproファイルでQtCreatorからコンパイルできるか?
できなかったら、proファイルに不備がある。
できたとしたら、qmakeのオプションが怪しい
397デフォルトの名無しさん:2010/02/20(土) 23:24:46
Qt CreatorでGUIのウインドウをつくるときって
一緒につくられるヘッダファイルやソースファイルに変更が反映されていくの?
それとも何かでコード出力しなきゃダメなの?
398デフォルトの名無しさん:2010/02/20(土) 23:29:33
>>396
> qmake -projectで作り直したproファイルでQtCreatorからコンパイルできるか?

うん、QtCreatorからそのproファイルを読み込んで「ビルド」を実行するとコンパイルできてしまう。
399デフォルトの名無しさん:2010/02/20(土) 23:32:35
>>380
それだ!!
うちのも何か eula.1041.txt とか10個くらい
作成されてた理由がわかったd 特に害もないから気にせず放置してたけどw
400デフォルトの名無しさん:2010/02/20(土) 23:36:48
>>384
恥。レスよく読めよじぶん乙orz
401デフォルトの名無しさん:2010/02/20(土) 23:38:22
>>398
Qt Creatorは各種の環境変数を内部で設定して、それを子プロセスに引き継いだ状態で
qmakeを起動するから、結局はコマンドラインでqmakeするときの環境変数の設定が
足りないんじゃないか?

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

俺はWindowsでやってるから外してるかもしれないが、基本は同じだと
思うので...
402デフォルトの名無しさん:2010/02/21(日) 02:25:27
っつーか本気で教えてもらおうという気が感じられないんだが
ふつう自分の環境変数とかここに貼るだろ
403デフォルトの名無しさん:2010/02/21(日) 03:42:08
ちょ、ちょっと待ってね
FreeBSDへのインストールが間違っているのかと思って
QtCreatorからQt4ライブラリと一式アンインストールしてきた。

再度インストールしなおそうと思うんだけどパッケージからインストールすべきか、
本家からソースコードをとってきて地道にコンパイルしてインストールすべきか迷う。。。
404デフォルトの名無しさん:2010/02/21(日) 03:56:48
405デフォルトの名無しさん:2010/02/21(日) 05:39:55
本家からソースコードをとってきて地道にコンパイルしてインストールすべき
406デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/21(日) 12:22:58
WMを窓から投げ捨てる
408デフォルトの名無しさん:2010/02/21(日) 12:43:46
>>407
やっぱり無理ですか?
自分の知識不足だろうと思ったんですが・・
.netの起動より遅いんですよねorz
409デフォルトの名無しさん:2010/02/21(日) 13:10:59
staticにリンクしたらどうだ?
410デフォルトの名無しさん:2010/02/21(日) 13:14:09
自分もWindows上でQt + MinGWという環境で開発しているけど
それを外部で実行する際に必要なDLL一式って何を取りそろえばいいんだっけ?
一カ所にまとまっていたりしない?
411デフォルトの名無しさん:2010/02/21(日) 13:29:48
Dependency Walkerで調べて,binディレクトリから拾ってくればOK。

ttp://www.dependencywalker.com/

Qtのヘルプのどこかのページでも紹介してたと思った。
412デフォルトの名無しさん:2010/02/21(日) 13:36:51
QCoreApplicationならQtCore4.dll、QApplicationなら加えてQtGui4.dll
qmakeでQT変数に加えたdll(networkならQtNetwork4.dll)が必要。

後、実行時に動的に読まれるdllもあるから、直接の依存関係が無くても
plugins 以下も必要なdllがある。
413デフォルトの名無しさん:2010/02/21(日) 13:54:30
>>411-412
ありがとノシ
いずれQtの側でも作成したプログラムごとに必要なDLL一式をエクスポートしてくれる機能が実装されるといいね。

> QtCore4.dll
> QtGui4.dll

このdllファイルって

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

の二カ所に同名で格納されてるけどどっちを使ったらいいと思う?
サイズは微妙に違う(後者の方が大きい・・・)
414411:2010/02/21(日) 14:17:13
俺はQtのSDKの方じゃなくて「フレームワークのみ」の方からダウンロードして使ってるので
ディレクトリ構成が違うのでわからないけど,PATHの通ってる方でいいじゃないか?

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

\Qt\2010.02\qt\bin

こっちを使っているみたいノシ
416デフォルトの名無しさん:2010/02/21(日) 16:33:12
>>409
7→4秒程度になりました。
(analogclock.exe msvcp80.dll msvcr80.dll)
このへんが限界なんでしょうかね?


//これでやっと.net並みorz
417デフォルトの名無しさん:2010/02/21(日) 16:48:22
>>413
前者はSDKのツール用のDLL。Qt Creator とか。
後者はフレームワーク用のDLL。

作ったアプリでリンクされるのは後者なので後者を使う方が無難。
418デフォルトの名無しさん:2010/02/21(日) 18:34:26
Win版QtCreatorのソースってSDKに含まれてるんでしょうか?
\Qt\2010.02\qt\srcの中にそれっぽいフォルダが見つからなかったもので。
419デフォルトの名無しさん:2010/02/21(日) 19:37:42
420デフォルトの名無しさん:2010/02/21(日) 19:40:31
Qt on Android って雲行きが怪しいんだなぁ
421418:2010/02/21(日) 21:14:58
>>419
あっ、なるほど!見落としてました。
ありがとうございました。
422デフォルトの名無しさん:2010/02/21(日) 23:43:27
もはやQtはMeeGo一択でしょ
AndroidはGoogleがオラオラすぎで
ポカーンって感じ

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

これってそういう決まりだと思って素直に受け入れるべきもの?
それともこれは一つの流儀であって別にコンストラクタの中で宣言しなくてもいいもの?
424デフォルトの名無しさん:2010/02/22(月) 01:12:07
>>423
connect() を呼び出す場所のことか。
コンストラクタで呼ぶのはそのクラスの寿命の間に接続関係に変化がない場合。

別にそれ以外の場所で connect() や disconnect() を使ってシグナルの接続関係を変えても問題ない。
サンプル程度の短いものだとあまりそんな処理が出てきてないだけだと思う。
425デフォルトの名無しさん:2010/02/22(月) 03:03:51
>>424
そうなんだ。重要なのはapp.exec()を実行するまでにどこかしらの場所でconnect()関数が
最低でも一度は呼び出されるようなプログラムを書けと言うことなのね。
426デフォルトの名無しさん:2010/02/22(月) 04:21:04
app.exec()の後でconnectしてもそれまでにsignal来ないなら大丈夫
427デフォルトの名無しさん:2010/02/22(月) 08:50:40
m_fileMenu = new QMenu(menuBar());
menuBar()->addMenu(m_fileMenu);
QMainWindowを継承したクラスで、こんなコードがあります
なんで、QMenuに引数にthisじゃなくて、menuBar()なの?
428デフォルトの名無しさん:2010/02/22(月) 20:56:29
親(引数parent)を指定してるんじゃないかな
addMenu()でも勝手に親子関係が設定される
(結局parentに代入される)ので
m_fileMenu = new QMenu();
menuBar()->addMenu(m_fileMenu);
でも動くと思う
429デフォルトの名無しさん:2010/02/22(月) 21:10:21
どういう親子関係なのか聞きたいんじゃないかと予想してみる
ウインドウ→メニューバー→メニュー→メニュー項目
430デフォルトの名無しさん:2010/02/22(月) 21:24:02
m_file ってんだから「(&F)ファイル」だろうな
431デフォルトの名無しさん:2010/02/22(月) 21:25:46
>>427
>QMainWindowを継承したクラスで

thisを渡すとMainWindowが親になっちゃうから
432デフォルトの名無しさん:2010/02/22(月) 21:26:57
>>427 >>431
結局コンストラクタで何を引数にしていても
menuBar()->addMenu(m_fileMenu);
で上書きされると思うんだが
433デフォルトの名無しさん:2010/02/22(月) 21:36:37
QMenuのヘルプを読む限り、QMenuのコンストラクタに渡すparentは他のQObject
からの派生クラスと同じように、自動deleteのためだけのようだよ。
だから>>427の例ではにコンストラクタの引数は別にthisでもいいんじゃないの?
434デフォルトの名無しさん:2010/02/22(月) 21:45:31
>>433
メニューバー交換したらリークしませんか?
435デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/23(火) 02:03:16
>>439
上書きインストールってできたっけ?
それとも一度アンインストールする必要あり?
441デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/23(火) 19:32:49
QNetworkAccessManager::finished(QNetworkReply *reply)
でダウンロード後の処理をしようと思うのですが、
QNetworkReply::finished()
の方とどっちでするのが良いでしょうか?
前者は複数セッション同時にダウンロードしてても大丈夫でしょうか?
443デフォルトの名無しさん:2010/02/23(火) 21:26:44
やりたいようにやればいいんでね?
444デフォルトの名無しさん:2010/02/23(火) 23:25:58
QPixmapをloadしたいのですが、
実行ファイルを開発環境以外に移して実行すると、png以外開けません。

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

教えていただけると助かります。
445444:2010/02/23(火) 23:28:46
申し訳ありません、書き忘れました。

開発環境は、Windows XP で Qt Creater(MinGW) を用いています。
つまり、ダウンロードできるパッケージをそのままインストールした感じです。
446デフォルトの名無しさん:2010/02/23(火) 23:37:15
447444:2010/02/23(火) 23:54:33
>>446
ありがとうございます。
そのツールを使って確認しましたが、それらしいdllはなく、
表示されたdllを全て詰め込みましたが駄目でした。

jpgやgifなどは、デフォルトでは使えず、プラグインを使用してるという記事も目にしましたが、
実際にどこを参照しているのかがわかりません。
448デフォルトの名無しさん:2010/02/24(水) 00:03:37
C:\Qt\2010.02\qt\plugins\imageformats
449444:2010/02/24(水) 00:08:48
>>448
やはりそこなのですね、ありがとうございます。

そこにあるqjpeg4.dllやqgif4.dllを詰め込んでみましたが、これでは駄目でした。
どこかで明示しないといけないのでしょうか?
450デフォルトの名無しさん:2010/02/24(水) 00:19:30
どこに置いた?
plugins の下はアプリのバイナリと同じ場所からは読まない。
プラグインのディレクトリの imageformats の下から。
アプリと同じ場所に plugins\imageformats を作るか
imageformats を作れば良かったはず。

QLibraryInfo::location(QLibraryInfo::PluginsPath) を参考に場所を決めるといい。
http://qt.nokia.com/doc/4.6/deployment-windows.html
451444:2010/02/24(水) 00:31:59
>>450
できました!
結果的には、おっしゃるように、アプリケーションと同じ場所に imageformats を作れば良かったようです。
それまでは、dllを直に置いていました。

ありがとうございました!
452デフォルトの名無しさん: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("http://pc12.2ch.net/test/bbs.cgi"), jp->fromUnicode(dat));
return app.exec();
}
453デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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:http://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デフォルトの名無しさん:2010/02/24(水) 20:56:00
>>456
そもそも QLabel や QLineEdit などには clicked() シグナルがないので無理。
mouserPressEvent(), mouseReleaseEvent() を継承して自分で clicked() シグナルを出すか、
編集がいらない場合はボタンをラベル的に扱うか。
459デフォルトの名無しさん:2010/02/24(水) 20:57:55
>>457
普通にエラーメッセージ通りなのでは?
スワップできないとかあるから、
HDD掃除かパーティーションきり直しか。

gccのバグだったらごめんぬ。
460デフォルトの名無しさん:2010/02/24(水) 21:13:48
>>459
swapは/に統合してあるからHDDの容量が限界を迎えるまで余裕があるはずなんだけど(´・ω・`)・・・
461デフォルトの名無しさん:2010/02/24(水) 21:56:57
>>459
失礼、swapは独立した領域に256MB確保していた。
でも256MBでも足りなかったのか・・・
最近のソフトの肥大化は恐ろしいな(´・ω・`)

というわけで急遽512MBの緊急SWAPを追加してコンパイル再開中
462デフォルトの名無しさん:2010/02/24(水) 23:42:49
はじめまして。
OSS版のQtをVisualStudio2008 Expressで使用しています。
テキストエディタを右クリックしたときのメニューや、
ダイアログのキャンセルボタン等が英語で表示されているので
http://www.sra.co.jp/qt/relation/index.html
の情報とかを使って日本語で表示するようにしようとしたのですが、うまくいきません。
もしご存知の方がいましたらやり方を教えていただけないでしょうか。
よろしくおねがいします。
463デフォルトの名無しさん:2010/02/25(木) 02:48:04
>>461
swap_pager: out of swap space

もしかして失敗して中断したら
make clean
してから
make all
とかやってる?
それだと毎回同じところで止まるけど
上の中断なら失敗したところからすぐさま
make all
だけで続きから始まるし swap もリセットされて上手くいくよ?
464デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/25(木) 04:17:47
(´・ω・`)ノシ
466デフォルトの名無しさん:2010/02/25(木) 04:19:38
>>458
どうせ1個とか2個しか使わない上に単純な処理なんだったら、そのQLabelを作るクラスにeventFilter定義する方法もあるよね。
そしたらQLabelのサブクラス作らなくてすむけど、QLabelからシグナル出すって目的は果たせない。
eventFilterもってるクラスでスロット直接呼び出すか、そのクラスのシグナルを発生するかだな。
467デフォルトの名無しさん:2010/02/25(木) 12:52:29
Qt Creatorでアクションエディタに登録したアイコンをツールバーにドラッグ&ドロップするだけで
簡単にツールバーがデザインできるのは便利だど思うんだけど、ツールバーにアイコン以外
(例えばドロップダウンリスト)を配置したい場合はQt Creatorでは無理な話ですか?
468デフォルトの名無しさん:2010/02/25(木) 13:08:08
(´・ω・`)
469デフォルトの名無しさん:2010/02/25(木) 15:20:09
(´・ω・`)
470デフォルトの名無しさん:2010/02/25(木) 16:09:34
QStringList args = app.arguments();
でコマンドラインオプションを取得するとき
オプションの中に「%」が含まれていると
args[1] にうまくデータが入りません
「%0D」だと「1267081114D」という文字列になってしまいます
「%%0D」とか「\%0D」とかを試しても駄目でした
なにが間違っているのでしょうか?

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

使い方変わったのかな?

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

出てこなければ、[ツール]メニューの[オプション]⇒{ヘルプ}⇒[ドキュメント]に
ちゃんと各種のヘルプファイル(.qch)が登録されてるかどうか確認してみて。
登録されてなければ、登録しなおせば大丈夫なはず。
474デフォルトの名無しさん:2010/02/25(木) 19:33:52
>>473
[ツール]メニューの[オプション]⇒{ヘルプ}⇒[ドキュメント]には
各ヘルプファイルが表示されていましたが(既に存在しない古いモノもありました??)
一度全部消してもう一度全て追加し直した所、表示されるようになりました。

どうもありがとうございました。助かりました。
475デフォルトの名無しさん:2010/02/25(木) 19:49:42
>>474
WindowsならAppData以下のフォルダに設定ファイル残ってるからね
476デフォルトの名無しさん:2010/02/25(木) 20:52:01
>>467
ワードパッドのフォント選択みたいなことができないかってこと?
今Creatorさわってみたけど多分無理
477デフォルトの名無しさん:2010/02/26(金) 03:00:36
Qtのオブジェクトってポインタで受け渡しするものが圧倒的に多いわけだけど
たとえば

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

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

Qtの内部がどうなっているのか知らないから何とも言えないけど
なんでわざわざポインタで渡すの?
普通にクラスオブジェクトを渡してもいいじゃない。
478デフォルトの名無しさん:2010/02/26(金) 03:08:06
クラスオブジェクトを渡したらコピーコンストラクタが動くから(ry

ポインタじゃなくて参照って話ならわからんでもないが
479デフォルトの名無しさん:2010/02/26(金) 03:13:27
>>478
参照渡しでもいいよね。
でもC++ベースの言語であるQtでなぜにあえてポインタ渡し?
480デフォルトの名無しさん:2010/02/26(金) 03:15:18
g.c.
481デフォルトの名無しさん:2010/02/26(金) 03:25:58
482デフォルトの名無しさん:2010/02/26(金) 03:33:29
で?
483デフォルトの名無しさん:2010/02/26(金) 05:43:39
確かになんでだろう?
まあNULLを渡したい時との、整合性とかじゃね?
484デフォルトの名無しさん:2010/02/26(金) 05:55:01
単にWidgetはポインタとして保持する場面が多いから
いちいち*とか付けないでそのまま渡せるようにしただけじゃないのか
485デフォルトの名無しさん:2010/02/26(金) 06:05:23
マジレスすると、単にC++ではポインタ渡しが基本だからだと思うが・・・
thisの型は参照ではなくポインタだし、new演算子もポインタを返すし、他の言語ならあるはずのnull参照も存在しない
C++の参照渡しは、スタック上のオブジェクトや右辺値をまるで値渡しみたいに渡せて便利!っていう程度のもの
だからnewしたポインタに逆参照かけて参照渡しするような、むしろ面倒になるケースで使っても意味がない
あと値渡しは基本型に対して使うのが一般的。コンパイラ依存だけどレジスタ渡しになってお得だから
オブジェクトを値渡しするとすんごいコピーしちゃう。VM系言語で言うと毎回ディープコピーして渡す勢い
ということで、ポインタ渡し/参照渡し/値渡しの三択なら、誰が書いてもポインタ渡しを選ぶことになるかと

でもなんでスマートポインタ渡しにしないんだよって話なら俄然わかるよ
486デフォルトの名無しさん:2010/02/26(金) 06:27:12
>>485
スマポ渡しにすると、普通は困らないだろうが、
速度を極限まで追求したいときには困るからとか?

過去との互換性かなそれとも。
487デフォルトの名無しさん:2010/02/26(金) 07:21:56
ガベコレで回収されたときに辻褄が合うようにするためだと思ってた
488デフォルトの名無しさん:2010/02/26(金) 07:23:42
>>484
それだ
489デフォルトの名無しさん:2010/02/26(金) 08:58:32
スマートポインタはスマートポインタ同士の互換性がないから。
すべての人がすべての用途に使うスマートポインタがC++にあれば良いけど、
無いから一番汎用的なポインタは生ポインタ
490デフォルトの名無しさん:2010/02/26(金) 09:33:31
QMainWindow *w = new QMainWindow();

connect(&*w, SIGNAL(...
491デフォルトの名無しさん:2010/02/26(金) 13:37:30
ありがとうございました
492デフォルトの名無しさん:2010/02/26(金) 15:00:23
QListViewの行にそれぞれ別の文字色を割り当てるにはどうのように
493デフォルトの名無しさん:2010/02/26(金) 15:01:47
>>492
書き途中で投稿してしまいました。

QListViewの行にそれぞれ別の文字色を割り当てるにはどうのように
すればできますか?
494デフォルトの名無しさん:2010/02/26(金) 15:12:09
お前ら、ようやく入門Qt4プログラミングを買いましたよ
学生の俺に4k円はデカい
495デフォルトの名無しさん:2010/02/26(金) 18:57:28
1つのソース中でOSに依存したコードがある場合、
#ifdef XXX
// for Windows

#else
// other( mac or other unix)

#endif

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


496デフォルトの名無しさん:2010/02/26(金) 19:01:01
497デフォルトの名無しさん:2010/02/26(金) 19:06:16
>>493
できない
498デフォルトの名無しさん:2010/02/26(金) 20:08:02
>>494
英語が読めれば全く同じ内容の文書がネットでタダで入手出来るんだが・・・
499デフォルトの名無しさん:2010/02/26(金) 20:12:19
英語が読めないんならいいだろ
500494:2010/02/26(金) 20:14:33
>>498
普通にそんなこと知らんかった
501デフォルトの名無しさん:2010/02/26(金) 20:22:46
>>497
QListWidgetならできるのにQListViewではできないんですか?
502デフォルトの名無しさん:2010/02/26(金) 20:26:17
英語が読めるだけじゃ辛いよ
503デフォルトの名無しさん:2010/02/26(金) 20:26:44
>>494
英語が読めたとしても、
日本語の書籍がたった4000円で買えるなら、
俺は払うぜ。

4000円だろ?俺も学生だけど、日本に生まれ育っていると
やっぱり日本語の方が絶対読みやすい。
504デフォルトの名無しさん:2010/02/26(金) 20:28:54
>>501
サンプルあさくってみ。
やっている奴があったはず。
505デフォルトの名無しさん:2010/02/26(金) 20:51:36
>>504
ありがとうございます。
サンプルについてもう少しヒントをください。
506デフォルトの名無しさん:2010/02/26(金) 21:13:56
http://sourceforge.jp/magazine/10/02/25/0735216
Qtで作ったソフトがすごいブックマークされていたので貼り
ソースも公開されてる
507デフォルトの名無しさん:2010/02/26(金) 21:54:55
>>493
QStandardItem::setBackground()
508507:2010/02/26(金) 21:57:16
文字色だった orz
setForeground()
509デフォルトの名無しさん:2010/02/26(金) 22:58:05
>>507
できました。
本当にありがとうございます。
510デフォルトの名無しさん:2010/02/27(土) 07:41:03
なんでこんなにブックマークされてんのか
いまいちよくわからんな
511デフォルトの名無しさん:2010/02/27(土) 12:37:02
Bearer Managementが4.7から入るんだね
コレ早く正式版出ないかな
512デフォルトの名無しさん:2010/02/27(土) 12:57:55
class CustomClass : public QObject
{
Q_OBJECT

signals:
void valueChanged(int);

public slots:
void display(int);
};

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

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


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

slots:
void display(int);

と記述を簡易化できない?
513デフォルトの名無しさん:2010/02/27(土) 13:06:10
>>512
protected slots:
private slots:
ってのがあるんじゃね。
あと、可読性が悪くなるじゃん。
514513 :2010/02/27(土) 13:08:14
つまり
publicって一言も記述していないのに
以下パブリックになっちゃったら可読性が微妙ってことじゃない?

あとは過去との互換性。
515デフォルトの名無しさん:2010/02/27(土) 13:52:41
Qt Designer は Qt Creator があれば必要ないように思うんだけど
Qt Designer にしかできないことってあるの?
516デフォルトの名無しさん:2010/02/27(土) 13:54:56
QtCreatorを使わない人が使う。
517デフォルトの名無しさん:2010/02/27(土) 14:17:06
>>515
Qt Creator は Qt Designer のラッパ的なものでしょ?
518デフォルトの名無しさん:2010/02/27(土) 14:18:10
お前は何を言っているんだ
519デフォルトの名無しさん:2010/02/27(土) 14:29:12
>>495
>>496 にも書かれている他には、
Q_OS_WIN32 とか Q_OS_MAC がある。
関係ないけど、コンパイラごとに条件分けするにはQ_CC_MSVCなどが使える。

↓で、Q_WS_* Q_OS_* Q_CC_*を参照
http://qt.nokia.com/doc/4.6/qtglobal.html
520デフォルトの名無しさん: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デフォルトの名無しさん:2010/02/27(土) 19:40:25
>>520
後者。引数は特に付け足さなくてもいい。
522520:2010/02/27(土) 22:23:34
>>521
ありがとございます。
でも、引数なしにすると
no matching function for call
のエラーになってしまいます。
523デフォルトの名無しさん:2010/02/28(日) 01:25:12
CustomClass::CustomClass() : parentClass(){
524522:2010/02/28(日) 12:00:58
引数なしだと、やはり
no matching function for call to'Drawing::Drawing(QWidget*&)'
となり
void setupUi8QMainWindow *MainWindow)
{
.
.
widget = new Drawing(centralWidget);
のところが指摘されます。

なにか、やり方がまずい?
525デフォルトの名無しさん: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が描画されて消えてしまいます。。
足りない処理や、別手法などがあればアドバイスお願いいたします。
527526:2010/02/28(日) 14:02:21
自己解決しました。
親のクラスのインスタンスにしたら描画の問題が解決しました。
528522デフォルトの名無しさん:2010/02/28(日) 15:20:33
>>525
MainwindowにQWidgetなどを貼って、図形などを描くための
painterEvent関数を追加するときとか
529デフォルトの名無しさん:2010/02/28(日) 16:20:54
>>525
自分で作ったウィジェットをUIに埋め込みたいとき。
530デフォルトの名無しさん:2010/02/28(日) 16:26:42
>>520
うーん、じゃあ面倒くさいけど付け足すしかないみたいだねぇ。
531デフォルトの名無しさん:2010/02/28(日) 16:57:13
39
532525:2010/02/28(日) 18:10:32
>>528, >>529
理解できた。サンクス。
533デフォルトの名無しさん:2010/03/01(月) 04:10:56
今Qt本買うとしたら”入門Qt4プログラミング”でおk?
534デフォルトの名無しさん:2010/03/01(月) 09:18:41
>>533
おk
535デフォルトの名無しさん:2010/03/01(月) 09:25:48
英語が読めれば全く同じ内容の文書がネットでタダで入手出来るんだが・・・
536デフォルトの名無しさん:2010/03/01(月) 09:30:21
言語が違うものを同じ内容とするのはどうかと思う
537デフォルトの名無しさん:2010/03/01(月) 09:35:12
>>535
どこ行けばあるの?
538デフォルトの名無しさん:2010/03/01(月) 09:49:58
複数のDock Widgetをタブ表示した時、タブ位置を変更するにはどうすればいいんだろう。
539538:2010/03/01(月) 10:01:01
あと、複数Dock Widgetをタブ表示した時、タブをドラッグして表示順序を変更したりすることはできる?
540デフォルトの名無しさん:2010/03/01(月) 11:14:24
QMLの話題ってでてこないね
WPFもイマイチ盛り上がってないみたいだし
541デフォルトの名無しさん:2010/03/01(月) 11:47:48
>>540
QMLってWPFみたいなもんだっけ?
542デフォルトの名無しさん:2010/03/01(月) 16:39:26
>>537
C++-GUI-Programming-with-Qt-4-1st-ed.pdf
で検索
543デフォルトの名無しさん:2010/03/01(月) 16:41:26
>>542
公式の配布場所は?
544デフォルトの名無しさん:2010/03/01(月) 17:42:07
横からsunks
545デフォルトの名無しさん:2010/03/02(火) 23:23:37
入門Qt4プログラミングを120ページくらいまで読んだけど、
ひたすらアルゴリズムを説明しているような

本当にオライリー本なのか?と疑うような
546デフォルトの名無しさん:2010/03/03(水) 00:03:54
「入門 Qt4プログラミング」@Google ブックス
http://books.google.co.jp/books?id=DyGwIpisoG0C&printsec=frontcover&source=gbs_navlinks_s
547デフォルトの名無しさん:2010/03/03(水) 00:44:00
>>542
検索してみたけど、bittorrentや中国・韓国のサイトしかないような。
(1つだけ.frのもあるが。)

・・・これって合法な代物なの?
えらそうに英語版PDFがあるっていうから、
てっきり合法なんだと思ってるんだけど。
548デフォルトの名無しさん: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デフォルトの名無しさん:2010/03/03(水) 02:08:09
>>548
CONFIG += console
550548:2010/03/03(水) 02:17:24
>>549
ありがとう
でも、それってコマンドプロンプト起動してそこに実行結果表示するやつだよね?
そうじゃなくてQt Creatorのアプリケーション出力に出力したいんだよ
551デフォルトの名無しさん:2010/03/03(水) 02:32:52
>>545
お雷リーってそういう本だろ
552デフォルトの名無しさん:2010/03/03(水) 02:44:31
>>547
本は白黒なのにPDFの方はカラーだよね
それに(日本語の)本の方は誤字脱字だらけで
ソースもバグだらけだけど
PDFの方は問題ないんだよねw
553デフォルトの名無しさん:2010/03/03(水) 02:46:56
>>550
qDebug()
554デフォルトの名無しさん:2010/03/03(水) 03:24:33
>>548
WindowsのGUIアプリにはprintfとかcoutの出力先が基本的に存在しない
デバッガのコンソールに出力したい場合はAPIのOutputDebugString()というのを使う
Qt使ってる場合はqDebug()でおk
555デフォルトの名無しさん:2010/03/03(水) 09:02:13
qDebug()文字化けするお
556デフォルトの名無しさん: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デフォルトの名無しさん:2010/03/03(水) 17:50:46
>>555-556
あれ間違ってるんだよなー
559デフォルトの名無しさん:2010/03/03(水) 19:03:44
間違っているってどこが?
560デフォルトの名無しさん:2010/03/03(水) 23:14:30
>>553,554
ありがとう
561デフォルトの名無しさん:2010/03/04(木) 12:29:12
Windows XP(コンパイラはVC 2008)でQt Creatorで作ったアプリのデバッグしてるんだけど,
デバッガの動きが極端に遅い。デバッグヘルパOFFにしてみたけど大差なし。

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

MinGW gccでgdb使った場合も遅いんでしょうか?
562デフォルトの名無しさん:2010/03/04(木) 14:40:22
そういや、Qt4 Createrは最低どれくらいのマシンスペックが必要なんだろう
ざっと探したが見あたらない…
563デフォルトの名無しさん:2010/03/04(木) 16:25:41
メインウィンドの右半分にテキストエディタを配置して、これを
メインウィンドの伸縮に合わせて延びちじみさせたいんですが
テキストエディタのプロパティ設定では出来ないんでしょうか。
564デフォルトの名無しさん:2010/03/04(木) 16:35:34
>>563
出来ないです。
565デフォルトの名無しさん:2010/03/04(木) 16:48:27
左に何を置くか次第だが sizePolicy や minimumSize をきちんと設定すれば出来ると思う。
566デフォルトの名無しさん:2010/03/04(木) 17:40:32
>>565
毎回、そのsizePolicyとかminimumSizeで悩む。
で、毎度毎度試行錯誤して決めてる。
ちゃんと理解してないからだと思うんだけど、、
どこかに良い資料とかないですかねえ。。
567デフォルトの名無しさん:2010/03/04(木) 19:05:45
>>547
http://www.informit.com/articles/index.aspx?st=60233&page=2
ここは、合法だろう。多分本の内容全部ある。
568561:2010/03/04(木) 20:30:25
>>561
自己レスです。自作のDLLの更新とインポートライブラリやヘッダの更新が合ってなくて、
関数のエントリポイントがずれたりしていたのが原因だったようです。

さすがにステップ実行に数十秒もかかるようなことはなくなりましたが、やはり最初の
ブレークポイントで止まるまでは相当時間が掛かりますね。
569563:2010/03/04(木) 22:15:42
sizePolicyをいろいろいじってみてたんですが、よく分かりません

MainWindowにresizeEventを書いて、ここで
ui->TextEdit->setMaximumSize で出来そうな気がしますが
setMaximumWidth(sizeHint().width()); としたら、TextEditのminimumSizeに
なってしまいました。
sizeHintは最適なサイズを返す関数だと思うんですが、
570デフォルトの名無しさん:2010/03/04(木) 23:00:26
>>547
心配ならこの中から探して落とせ
ttp://qt.nokia.com/developer/learning/qt-essentials-curriculum-block
571デフォルトの名無しさん: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 もリサイズするけど )
572569: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
http://doc.trolltech.com/4.5/layout.html

InformIT: C++ GUI Programming with Qt4: Layout Management > Laying Out Widgets on a Form
http://www.informit.com/articles/article.aspx?p=1405543
574デフォルトの名無しさん:2010/03/05(金) 21:21:33
>>572
>QListViewをFixedの QTextEditをExpandingに設定し 両方を選択
>右クリックからレイアウト>水平に配置

「両方を選択」しないで「外のQWidgetを選択」してレイアウトを指定。
575572:2010/03/05(金) 22:17:02
>>573,574
できました。ありがとうございました
576デフォルトの名無しさん:2010/03/06(土) 00:33:52
QtのGUIをWindowsのXAMLみたいにXMLで記述することってできますか?
577デフォルトの名無しさん:2010/03/06(土) 00:40:32
designerが掃き出す*.uiってXMLなんだが
578576:2010/03/06(土) 00:58:16
あっ、すみません、言葉足らずでした。
プログラム実行時にXMLで記述された内容に従ってGUI表示ってできますか?
つまりXMLを編集してプログラム実行時に表示内容を変更できないかと。
579576:2010/03/06(土) 01:09:09
良く考えたらシグナルとスロットのconnectとか考えたらXMLじゃなくてQt Scriptで記述しないとダメかもですね。。。
580デフォルトの名無しさん:2010/03/06(土) 01:33:05
できます
581576:2010/03/06(土) 11:59:30
>>580
できますか!
どこかに参考になるサンプルコードなどあれば教えていただけないですか?
582デフォルトの名無しさん:2010/03/06(土) 13:11:34
>>580
現実的じゃない
全ての分岐を書くくらいならQtScript用のコード生成したほうが楽
583sage:2010/03/06(土) 15:09:41
カスタムWidgetなどにショートカットをつける事はできますか?
QPushButtonにはsetShortcutで簡単にセットできるのですが、
自作のWidgetにショートカットでクリックイベントを渡す事ができません。
keyPressEventなどで地道に全部書くしかないんでしょうか・・
584575:2010/03/06(土) 15:18:11
たびたび、すいません。
左右ペイン風のフォームを作り、右にTextEditをExpnading、左にLineEdit、PushButtonなど
を垂直レイアウトした場合うまく動作するんですが
左にListWidgetを加え場合、左レイアウトの幅がListWidgetのデフォルト幅の256
になってしまい、思うようなレイアウトになりません。
585デフォルトの名無しさん:2010/03/06(土) 15:44:12
>>581
QUiLoader
Qt Designer の .ui ファイルで出来ることは限られているから
どのくらいやりたいことと合うのかは知らんが。

まだ開発中だし、XMLでもないが今後なら QML が入ってくるから
やれることも広がってくる。
586デフォルトの名無しさん:2010/03/06(土) 15:48:37
>>583
QAction に setShortcut して、その triggered() シグナルを
自作の Widget のスロットに connect() すれば出来ると思う。
587デフォルトの名無しさん:2010/03/06(土) 23:17:42
変換
無変換
カタカナひらがな

このキーはeventでなんの反応も無いのは仕様?
反応させる方法ある?
588デフォルトの名無しさん:2010/03/07(日) 00:07:59
なんとなくわかった
IMEが横取りしないようにしなきゃだめなのか
589デフォルトの名無しさん:2010/03/07(日) 16:17:33
こっちには機知概来てなくて良かった
590デフォルトの名無しさん:2010/03/07(日) 17:18:39
Qt使ってファイルのタイムスタンプの更新ってどうやるの?
まさか、できない?
591デフォルトの名無しさん:2010/03/07(日) 18:14:12
>>590
できない。
592デフォルトの名無しさん:2010/03/07(日) 21:06:59
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
593デフォルトの名無しさん:2010/03/07(日) 22:15:09
>>590
QProcess
594デフォルトの名無しさん:2010/03/07(日) 23:37:56
>>593
touchしろってこと?
595583:2010/03/08(月) 16:27:24
QActionでショートカットを作成しました。が、
同じKeyを二つの関数にconnectすると
QAction::eventFilter: Ambiguous shortcut overload: x

とかになってしまうのですが、
動作させる方法はありますでしょうか?
596デフォルトの名無しさん:2010/03/09(火) 02:14:40
>>595
同じ Widget に同じキーシーケンスの action があると問題があるみたいだな。
QWidget::addAction() でショートカットを Widget と結びつけてる?
それぞれのアクションが別の Widget にあればフォーカスに応じて
適切に使用される action が切り替わるようだけど。
597デフォルトの名無しさん:2010/03/09(火) 09:39:46
decimal型を使いたいのですがQtにはありませんか?
自作しないとだめ?
598デフォルトの名無しさん:2010/03/09(火) 10:02:28
普通にgmpでも使えば?
599デフォルトの名無しさん:2010/03/09(火) 12:56:37
* Qt LGPL 版で開発をした後に、Qt 商用版に移ることはできません。

これの意味が分からんのだけど、一旦開発したソフトをLGPLとして公開して
しまったらもう商用版に移行できないってことなの?
600デフォルトの名無しさん:2010/03/09(火) 13:02:57
>>599
確か代理店にもらったライセンスの説明資料に,プロトタイプをLGPL版で開発した後に、
本番ソフトを商用版で開発するのもダメって書いてあったよ。

公開/非公開は関係ないらしい(バレるかどうかは別として)。
601デフォルトの名無しさん:2010/03/09(火) 13:11:10
極端だが、LGPL/GPL 版を使って多人数で開発しておいて、
最後の最後で商用版を1ライセンスだけ買ってリリースするようなことはするなってことなんだろう。
商用ライセンスでリリースするならきちんとライセンス料金を払って開発しろと。
602デフォルトの名無しさん:2010/03/09(火) 13:21:57
うぉ、即レスサンクス。
そーなのかー。なんか変な制限だなぁ。
最初LGPLで作ってうまくいったら商用版ていう流れは普通に考えられる
ケースだと思うんだけど。特に個人レベルの場合は。
603デフォルトの名無しさん:2010/03/09(火) 13:40:37
>>602
商用目的なら最初から商用版使えってことだから
別に変な制限じゃないと思うけど。
LGPL版はお試し版じゃないんだから。

開発目的が商用なのかそうじゃないのかを事前に
判断できないケースはそうそうないでしょ。
604デフォルトの名無しさん: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デフォルトの名無しさん:2010/03/09(火) 15:49:37
QtWebkitとかって
商用版でもLGPLになるのか
607デフォルトの名無しさん:2010/03/09(火) 16:05:21
>>605
メニューの QAction::MenuRole がデフォルトでは QAction::TextHeuristicRole になっているため。
Mac OS X のメニューのルールに従ってそのアプリケーションの「環境設定」メニューに割り振られるから。
メニューバーのアプリケーションメニューのところに組み込まれているはず。
http://qt.nokia.com/doc/4.6/qaction.html#MenuRole-enum

移動されたくなければ NoRole に設定すればいい。 Qt Designer でも設定できる。
608605:2010/03/09(火) 16:36:46
>>607
OKでした。席外して帰ってきたらさっそくご回答有難うございましたorz
609デフォルトの名無しさん:2010/03/09(火) 16:51:42
連続質問スマソ:

Qt Creatorを使って".ui"修正でmenuToolsを追加しましたが、
Qt Creatorでのイベントハンドラの追加方法が分かりません。

Qtのシグナルとスロットは勉強しましたし、
ソースコードでメニューをnewしてイベントと関数を結び付けるソースコードも勉強しましたが、
いざ、Qt Creatorでどうすれば良いのか。。。

ダブルクリックでイベントハンドラが開くのでなく、
シグナル&スロットのペインで、Go to slotメニューを実行して、
Go to slotダイアログを開くってことであってますか?
その先ダイアログの中身が良く分からないですけど。

このあたり、なんでウェブサイトやヘルプに一連のチュートリアルが無いのでしょう?
ソースコードでのチュートリアルは一杯見つかりますが、っていうかそっちばっか検索にひっかかってメンドウ。
610デフォルトの名無しさん:2010/03/09(火) 17:09:04
>>609
「Go to slot」でOK。

* Go to slot を選んでダイアログを表示する。
* ハンドラを呼び出すときのシグナルを選択する。
QPushButton なら clicked() だろうし、アクション(QAction) なら triggered() が普通。
* オブジェクトがシグナルを発生した場合に呼び出されるスロットが作成されるので処理を書く。

上記の流れだと connect() が呼び出されてはないが、 Ui クラスの中で connectSlotsByName() が
呼び出されているため、自分で別途 connect() する必要はない。
611609: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デフォルトの名無しさん:2010/03/09(火) 21:14:19
>>612
4.6 からは JavaScriptCore ベースに変わった影響で QtScript モジュールも LGPL になってる。
614デフォルトの名無しさん: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デフォルトの名無しさん:2010/03/10(水) 00:02:49
616デフォルトの名無しさん:2010/03/10(水) 00:14:48
>>615
え〜と・・・、何が足りなかったんでしょう・・・
617デフォルトの名無しさん:2010/03/10(水) 00:16:11
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!

618デフォルトの名無しさん:2010/03/10(水) 17:26:22
>throw std::excepton();
は出来ましたけど、
>throw std::excepton("error!");
はコンパイル通りませんb

普通にthrowでエラー文字列投げて、
アプリケーションのエラーハンドラで一括キャッチしたいのですが、
Qt Creatorではどうthrow/catchを書けば良いですか?

619デフォルトの名無しさん:2010/03/10(水) 17:51:06
throw std::exception("error!");
620デフォルトの名無しさん:2010/03/10(水) 17:54:06
std::exception は abstruct class だから instance 化できない
621618:2010/03/10(水) 18:04:45
もうひとつ分からないのは、
>throw std::runtime_error
が無い?????

QtってWindozの場合、実質コンパイラはgccですよね?
無い筈ないよー。
622618:2010/03/10(水) 18:10:16
少し思い出したけど、数値や文字を投げる場合は、
>throw 1;
>throw "moji";
でしたね。

C++ Builderみたく、
>thow Exception("aaa");
としたい(ま、標準じゃないエラークラスのとこはいまいちですが)のですが、
Qtな方々は、
ふつー何をthrowして、一括catchはどうやるのが一般的でしょう?
623618:2010/03/10(水) 18:17:10
連投スマソ
621の
>throw std::runtime_error("moji");
の問題は、
>#include <stdexcept>
で解決しました。
624デフォルトの名無しさん:2010/03/10(水) 18:43:35
C++の勉強して出直して来い
625デフォルトの名無しさん:2010/03/10(水) 20:58:04
Qt4.6.2( Win版 )で、
QLineEdit上の日本語入力がめちゃくちゃ重いです。( QTextEdit上では普通に入力できます )
QtDemoでもなります。
Item Views -> Simple Widget Mapperのデモが分かりやすいです。
他の方もこうなりますか?
626デフォルトの名無しさん:2010/03/10(水) 21:17:46
Qtで画像ファイルを読み込んでウィンドウに表示することって可能ですか? いくらprintfしても文字しか表示されません。
627デフォルトの名無しさん:2010/03/10(水) 21:19:38
#include <qt.h>

main{
printf("gazou.bmp");
}

としてもエラーになります。
628デフォルトの名無しさん:2010/03/10(水) 21:23:30
>>625
自分も同じ環境だけど同様です。
629デフォルトの名無しさん:2010/03/10(水) 21:57:26
Win版QtはIMEがらみがなんか不安定だよね
QtCreatorでもよくおかしくなるし、QTextEditでもいきなり落ちたりするから怖い
630デフォルトの名無しさん:2010/03/10(水) 22:06:57
IMが鬼門なのはQtは昔からだよなぁ。Linuxでもな。
631デフォルトの名無しさん:2010/03/11(木) 02:07:10
なんだ、使い物にならないのか
632デフォルトの名無しさん:2010/03/11(木) 02:11:37
せやで!
633デフォルトの名無しさん:2010/03/11(木) 03:33:04
非常に細かいことなのですが、Visual Studioでプロジェクトを作成するときに
Qt4 Projectsから作ると環境変数のQTDIRが自動設定されるようなのですが、
これがいったいどこに設定されるのか分かる人いますか?
プロジェクトのプロパティとか見てもコマンドラインで展開されているのは
確認できるんですが、設定箇所を見つけることができません。
634デフォルトの名無しさん:2010/03/11(木) 05:29:54
入力だけに限らず変換が遅いみたい
QImeEvent関連の処理が甘いんだろうか?
Qtランタイムごとプロファイルとって見れば一発だけど、俺msvc用のプロファイラもって無いんだよな…
635634:2010/03/11(木) 05:39:40
>>634>>625についてです

6.5.4なら問題無かった
次のバージョンでは直ってることを祈ろう
636デフォルトの名無しさん:2010/03/11(木) 11:29:54
6.5.4って?
637デフォルトの名無しさん:2010/03/11(木) 11:52:32
Visual Studio
638デフォルトの名無しさん:2010/03/11(木) 12:25:36
>>627
大きな釣り針?
639デフォルトの名無しさん:2010/03/11(木) 12:45:46
>>637
VS6(でコンパイルしたQt)だとIME遅くならないけど,2008だと遅くなるってこと?
話がよく見えない。
640デフォルトの名無しさん:2010/03/11(木) 13:03:37
横から
qt-win-opensource-4.6.2-mingw.exe
で同じようにLineEditだけ遅いのを確認
641デフォルトの名無しさん:2010/03/11(木) 13:23:55
漏れも良くわからん
642デフォルトの名無しさん: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デフォルトの名無しさん:2010/03/11(木) 19:14:40







>どゆこと?
644634:2010/03/11(木) 19:17:29
645デフォルトの名無しさん:2010/03/11(木) 19:22:47
OWLを思い出した
646デフォルトの名無しさん:2010/03/11(木) 20:42:47
会社の課題で4月1日までに、Rubyで何かを作らないといけないんだけど
Ruby + Qt4で作ったアプリを*.exeに固められる?
まだ、Rubyの文法もわからん
647デフォルトの名無しさん:2010/03/11(木) 20:46:20
exerb
648デフォルトの名無しさん:2010/03/11(木) 21:02:47
>>647
thx
649デフォルトの名無しさん:2010/03/11(木) 22:41:44
650デフォルトの名無しさん:2010/03/11(木) 22:46:40
>>627
おまえにQtは無理w
651デフォルトの名無しさん:2010/03/12(金) 01:38:38
この更新の勢いならweb環境も制覇してくれそう
652デフォルトの名無しさん:2010/03/12(金) 02:10:37
春休み最強
653642:2010/03/12(金) 08:50:21
>>643
>a.exec();

を囲んで一括catchして、
そのエラー処理でもう一回「a.exec();」するってことは出来ないですよね?
654デフォルトの名無しさん:2010/03/12(金) 09:42:31
>>653
母国語が通じるサイトで質問し直した方が良いよ。
655デフォルトの名無しさん:2010/03/12(金) 10:59:51
>>642
Qtは例外をthrowしないんじゃなかったけ?
実行時に何かエラーがあると,assertでエラーメッセージのダイアログが出る。

それとも自分でthrowしたものを一括でcatchしたいと言う話?
656642:2010/03/12(金) 11:32:10
>それとも自分でthrowしたものを一括でcatchしたいと言う話?

こちらです。
657デフォルトの名無しさん:2010/03/12(金) 12:17:10
C++の勉強して出直して来い
658デフォルトの名無しさん: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デフォルトの名無しさん:2010/03/12(金) 13:05:30
おわらないようにしたいんじゃね?でーもんとかwww
660デフォルトの名無しさん:2010/03/12(金) 13:10:11
春休みですね。
661642:2010/03/12(金) 13:11:35
>>659 おわらないようにしたいんじゃね?
その通りでつ。
C++ Builderだと、throw してcatchされなくてエラーメッセージボックスが出るだけですよ。
その動作を変えたい場合は、アプリケーションオブジェクトのイベントハンドラで先に例外catchできまつ。
662642: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デフォルトの名無しさん:2010/03/12(金) 20:54:12
qt creatorってけっこう完成度高いな
664デフォルトの名無しさん:2010/03/13(土) 00:50:21
2.0入れてみた
オプションを弄ろうとしただけで落ちたwww
665デフォルトの名無しさん:2010/03/13(土) 00:57:12
TP判とはいえあまりにも簡単に落ちすぎw
666デフォルトの名無しさん:2010/03/13(土) 11:59:12
プロトタイプ宣言をソースにもっていくときって
やっぱコピペですか?
667デフォルトの名無しさん:2010/03/13(土) 12:41:11
>>35
それ間違ってるよ
その条件だと全てのソースを公開する必要がある
LGPLでソース非公開で良いのは、動的リンク且つDLLを同梱しない場合に限る
668デフォルトの名無しさん:2010/03/13(土) 13:15:04
DLLを同梱しない場合
なんて制限書いてあったっけ?
669デフォルトの名無しさん: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デフォルトの名無しさん:2010/03/13(土) 13:29:25
symbolic link作ればいいだけなんとちゃう?
671デフォルトの名無しさん:2010/03/13(土) 14:34:51
手動でシンボリックリンク作成ですかorz・・・

それにしてもportsからインストールするとなぜ実行ファイルは

qmake
lrelease

でなく、

qmake-qt4
lrelease-qt4

なんでしょうか?
672デフォルトの名無しさん:2010/03/13(土) 16:55:25
名前がぶつかるから
673デフォルトの名無しさん:2010/03/13(土) 16:58:40
え( ´・ω・)?
674デフォルトの名無しさん:2010/03/13(土) 17:14:19
お前がそう思うならそうなんだろう
お前の中ではな
675デフォルトの名無しさん:2010/03/13(土) 19:50:54
そうなのか。知らなかった。
676デフォルトの名無しさん:2010/03/14(日) 06:57:10
なんでしょうか?
677デフォルトの名無しさん:2010/03/14(日) 08:10:06
逝ってよし
678デフォルトの名無しさん: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デフォルトの名無しさん:2010/03/14(日) 19:16:36
レスありがとうございます。
今まではVCに標準で付いていたcrtdbg.hを使うやり方だったのですが、
それだとうまくいかないようだったので。
他にもそういうツールがあるのですね。調べてみます。
681デフォルトの名無しさん:2010/03/14(日) 21:03:22
WinXP 環境に、
http://qt.nokia.com/downloads-jp
から Qt SDK: 包括的な開発環境 をダウンロードし、セットアップしました。
Qt Craetor を起動すると、マウスクリックが1回しか効きません。
Qt Creator 以外の部分をクリックすると、1回だけマウスクリックが効きます。

これって回避方法があるのでしょうか?
682デフォルトの名無しさん:2010/03/15(月) 01:09:46
OS再インストール
683デフォルトの名無しさん:2010/03/15(月) 07:54:04
>>681
うちは大丈夫
684デフォルトの名無しさん:2010/03/15(月) 11:34:14
/*! を使うとコメントをドキュメント化できるんでしょうか?
うまくぐぐれなくてorz
使用方法等のリンクあれば貼ってもらえないでしょうか?
685デフォルトの名無しさん:2010/03/15(月) 11:59:33
>>684
Doxygen
686デフォルトの名無しさん:2010/03/15(月) 12:52:56
>>685
ありがとうございます
687デフォルトの名無しさん:2010/03/15(月) 13:12:39
.proファイルに使える設定項目の一覧ページってどこかにないですか?
688デフォルトの名無しさん:2010/03/15(月) 15:13:17
qtの過去バージョンってどこで落せるの?
Qtライブラリのソースを求められたらどうすれば良いの?
689デフォルトの名無しさん:2010/03/15(月) 15:18:50
690デフォルトの名無しさん:2010/03/15(月) 15:35:50
>>689
サンクス、このアドレス載せておけば大丈夫って事かな
691デフォルトの名無しさん:2010/03/15(月) 15:37:23
692デフォルトの名無しさん:2010/03/15(月) 15:39:35
>>691
ありがとうございます
思ってたよりおおいな・・
693デフォルトの名無しさん:2010/03/16(火) 12:48:07
rubyでqt4やっている人居ますか?
694デフォルトの名無しさん:2010/03/16(火) 19:09:50
はい
695デフォルトの名無しさん:2010/03/16(火) 19:19:14
>>694
環境はどうしてます?
696デフォルトの名無しさん:2010/03/16(火) 19:27:57
434 デフォルトの名無しさん [sage] 2010/03/16(火) 17:50:56 ID: Be:
    connect(angle, SIGNAL('valueChanged(int)'), cannonField, SLOT('setAngle(int)'))
    なんで、rubyなのにこんなこと出きるんだよ〜
697デフォルトの名無しさん:2010/03/16(火) 21:35:22
'で囲むのがださい
698デフォルトの名無しさん:2010/03/16(火) 21:42:37
>>693
RubyのQtは、完成度低過ぎるので捨てました。
699デフォルトの名無しさん:2010/03/16(火) 22:56:06
PythonはPyQt4.7ですごくなったよな
self.foobtn.clicked.connect(foo_clicked)
みたいに、signalに . でアクセスできる。
700デフォルトの名無しさん:2010/03/16(火) 23:07:12
最近Qtみたいな統合環境をわざわざLLでやるメリットが感じられない。
.netのC#に対するVBみたいなものなのかな?
701デフォルトの名無しさん:2010/03/16(火) 23:11:57
コンパイル時間かかるじゃん
702693:2010/03/16(火) 23:12:17
ひとまず、QMainWindowを継承してメニューを追加する所までは作る事ができました
専用のIDEの有無ってデカいなと思いました

ところで、QMainWindowのセントラル・ウィジェットってどうやって作っていますか?
やっぱりQWidgetを継承して作った方がいいですかね

質問ばっかりでスマソ
703デフォルトの名無しさん:2010/03/17(水) 01:28:12
>>700
ちょっとしたのを簡単に書けて便利だよ。
特にGUI以外の部分がLLの方が圧倒的に楽に作れるときは。

けど、C++の関数ほぼそのままLLに持ち込んだだけのものがLLでも実用に耐えうるって、
相当使い勝手いいんだなぁと再認識させられる。
704デフォルトの名無しさん:2010/03/17(水) 02:02:37
LLってなんぞ?
705デフォルトの名無しさん:2010/03/17(水) 02:21:54
706デフォルトの名無しさん:2010/03/17(水) 02:34:07
QMLが加わった「Qt 4.7」の技術プレビュー版がリリース
http://pc11.2ch.net/test/read.cgi/pcnews/1268749861/

4.7って何が大きく変わるの?
707デフォルトの名無しさん:2010/03/17(水) 02:38:35
ttp://doc.qt.nokia.com/4.7-snapshot/qt4-7-intro.html
よくわからんけど、そのQMLとやらでGUIの構築が楽になるんじゃない?
あとマルチメディア関連の機能が結構追加されてるみたいだな
708デフォルトの名無しさん:2010/03/17(水) 03:28:09
>>703
そうだね
mocのおかげでC++とは思えないほどのLLとの親和性がある
LLでプロトタイプを作って必要なところだけC++で置き換えとか構想出来る
709デフォルトの名無しさん:2010/03/17(水) 03:42:44
>>708
そういう使い方したいんだけど、PyQtで書いたクラスをC++から呼び出したり、
逆にC++で書いたクラスをPyQtから呼び出したりって、どうやるのが簡単?
710デフォルトの名無しさん:2010/03/17(水) 04:27:04
LL言語のGUIアプリの作りにくさを考えればQtを使いたくなるよ
711デフォルトの名無しさん:2010/03/17(水) 06:08:51
Rubyのことか
712デフォルトの名無しさん:2010/03/17(水) 08:48:15
PythonだとクロスプラットフォームでオープンソースなGUIツールキットは
wxPython, PyQt, PyGTK 全部あって、全部よくメンテナンスされてるんだけど、
WindowsでのルックアンドフィールがWindowsネイティブに近い順に
PyQt > wxPython >>> PyGTK なんだよな。

RubyだとよくメンテされているGUIツールキットのバインディングってRubyCocoaくらい?
713デフォルトの名無しさん:2010/03/17(水) 08:52:40
RubyはGTKらしい
714デフォルトの名無しさん:2010/03/17(水) 11:16:44
Qt Labs Japan
ttp://qt-labs.jp
715デフォルトの名無しさん:2010/03/17(水) 12:58:10
>>714
そろそろ日本語リファレンス来るか
716デフォルトの名無しさん:2010/03/17(水) 13:01:18
Qt Creator 2.0.0 Tech Preview: Windows (.exe, 53 MB) をセットアップしたら
中身が 1.3.81 だったぞ
717デフォルトの名無しさん:2010/03/17(水) 13:56:30
>>716
公式の釣りか
718デフォルトの名無しさん:2010/03/17(水) 14:03:56
>>716
たしかにw
ダウンロード間違えたかと思ってリンク見直したw
719デフォルトの名無しさん:2010/03/17(水) 15:11:26
おれもやられたっておもったが、ヘルプ見るとVersion 1.3.81 (2.0.0 alpha)ってことみたいね。
720デフォルトの名無しさん:2010/03/17(水) 16:14:06
Qt Creator のソースをダウンロードしたので、プラグインの一部を修正してビルドしようと
思うのですが、その方法がよくわかりません。

どこかにその方法を説明してあるところはありますでしょうか?
721デフォルトの名無しさん:2010/03/17(水) 16:18:24
あきらめろ
722720:2010/03/17(水) 16:32:38
qt-creator-1.3.1-src にある qtcreator.pro を開いて、ビルドを行うと、
collect2: ld returned 1 exit status
となって ビルドが止まってしまいます。

どうしたらいいのでしょうか?
環境は Windows XP, Qt Creatot 1.3.1 です。
723デフォルトの名無しさん:2010/03/17(水) 16:46:30
以前,Qt Creatorをソースからビルドしたことがあって,今はもうソースファイルもダウロードした
パッケージも消してしまった(ディスクの容量枯渇w)ので具体的にはわからないけど,
ソースパッケージを解凍した中に,ビルド方法が書いてあるテキストファイルがない?
724720:2010/03/17(水) 16:49:09
readme に Compiling Qt Creator という部分があって、
====================
You need Qt 4.6 to build Qt Creator.
We recommend that you build Qt Creator not in the source directory, but in a separate directory.
To do that, use the following commands:
mkdir $BUILD_DIRECTORY
cd $BUILD_DIRECTORY
qmake $SOURCE_DIRECTORY/qtcreator.pro
make (or mingw32-make or nmake, depending on your platform)

と書いてあった。(続く)
725720:2010/03/17(水) 16:51:52
んで、c:/qt/2010.02.1/qt/bin にパスを通して、
qmake $SOURCE_DIRECTORY/qtcreator.pro
を実行したら、$BUILD_DIRECTORY に Makefile ができた。
んで、mingw32-make を実行すると、エラーがいっぱい出た。
===
mingw32-make[4]: *** [debug/moc_multitask.o] Error 1
mingw32-make[4]: Leaving directory `d:/Qt/qt-creator-1.3.1-src/build_dir/src/lib
s/qtconcurrent'
mingw32-make[3]: *** [debug] Error 2
mingw32-make[3]: Leaving directory `d:/Qt/qt-creator-1.3.1-src/build_dir/src/lib
s/qtconcurrent'
mingw32-make[2]: *** [sub-qtconcurrent-make_default-ordered] Error 2
mingw32-make[2]: Leaving directory `d:/Qt/qt-creator-1.3.1-src/build_dir/src/lib
s'
mingw32-make[1]: *** [sub-libs-make_default-ordered] Error 2
mingw32-make[1]: Leaving directory `d:/Qt/qt-creator-1.3.1-src/build_dir/src'
mingw32-make: *** [sub-src-make_default-ordered] Error 2
726デフォルトの名無しさん:2010/03/17(水) 16:58:36
エラー読んでる?
その箇所張られてもどうしようもないんだけど
727デフォルトの名無しさん:2010/03/17(水) 17:01:43
エラーメッセージはどこにあるんだろう?
===
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
DBUILD_QTCONCURRENT -DIDE_LIBRARY_BASENAME=\"lib\" -DWITH_TESTS -DQT_NO_CAST_TO_
ASCII -DQT_DLL -DQT_TESTLIB_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -
I'c:/Qt/2010.02.1/qt/include/QtCore' -I'c:/Qt/2010.02.1/qt/include/QtGui' -I'c:/
Qt/2010.02.1/qt/include/QtTest' -I'c:/Qt/2010.02.1/qt/include' -I'../../../../sr
c/libs' -I'd:/Qt/qt-creator-1.3.1-src/tools' -I'c:/Qt/2010.02.1/qt/include/Activ
eQt' -I'debug' -I'../../../../src/libs/qtconcurrent' -I'.' -I'c:/Qt/2010.02.1/qt
/mkspecs/default' -o debug/moc_multitask.o debug/moc_multitask.cpp
g++: CreateProcess: No such file or directory
===
これ?
728デフォルトの名無しさん:2010/03/17(水) 17:04:57
C:\Qt\2010.02.1\mingw\bin
にパスを通したら、コンパイルが始まりました。

どうもお騒がせしました。m(_ _)m
&アドバイスありがとうございました。
729デフォルトの名無しさん:2010/03/17(水) 17:08:26
もしかして,環境変数INCLUDEとかLIBに何か設定してない?
VC++も使ってると設定されてると思うんだけど。

Qt CreatorじゃなくてQtをビルドした時なんだけど,これらの環境変数が設定されていると
勝手にVC用のmakefileを作ってくれて,MinGWでコンパイルするとエラーになるトラブルに
出会った。

コマンドプロンプトで一時的に,

set INCLUDE=
set LIB=

として環境変数をクリアした状態でやったらうまく行ったよ。
同じかどうかわからないけど参考まで。

あともちろんMinGW関係の環境変数はちゃんと設定されてるよね?
CPLUS_INCLUDE_PATH とか,LIBRARY_PATH とかいくつかあるけど大丈夫?
730デフォルトの名無しさん:2010/03/17(水) 18:44:22
>>729
アドバイスありがとう。
VS2008 インストールしている環境なので、環境変数INCLUDEとかLIBとか設定されている。
また、MinGW関係の環境変数は設定していない。

しかし、上記の対策を何も行わなかったにも関わらず、mingw32-make release を実行すると、
bin の下に qtcreator.exe が、lib/qtcreator/pluging/Nokia の下にプラグインDLL、pluginspec ファイルができた。
んで、qtcreator.exe を起動できて、プラグインの修正が反映されていることを確認した。

どうやらビルドはうまくいったみたいだ。
731デフォルトの名無しさん:2010/03/17(水) 21:34:43
>>715
それは絶対にない。
732デフォルトの名無しさん:2010/03/17(水) 21:35:13
PythonバインディングでPySideを使ってる人はいないのかな?
俺はWindowsがサポートされてから試してみようかなと思ってる
733デフォルトの名無しさん:2010/03/17(水) 23:51:24
int main(int argc, char*argv[])
{
QDateTime dt(QDate(2010,3,15),QTime(0,0));
qDebug() << dt.time().setHMS(3,0,0);
qDebug() << dt;
return 0;
}

true
QDateTime("月 3 15 00:00:00 2010")

となるんですがどこに問題があるんでしょうか?
734デフォルトの名無しさん:2010/03/18(木) 00:08:41
新しく出たqt4.6.2.1 macでビルド失敗
同一症状の人いる?
735デフォルトの名無しさん:2010/03/18(木) 00:34:32
dt.time().
736デフォルトの名無しさん:2010/03/18(木) 11:02:22
QObject::startTimer: QTimer can only be used with threads started with QThread
何これ?
QTimerはQThreadと一緒に使うことができない、って訳でいいのかな

737デフォルトの名無しさん:2010/03/18(木) 11:03:35
節子それちゃう
738デフォルトの名無しさん:2010/03/18(木) 11:04:57
おいおい
739デフォルトの名無しさん:2010/03/18(木) 11:07:25
80/20の法則、あるいは70/30の法則ってのがある

プログラム全体の実行速度の70%〜80%を20%〜30%の部分が占めている
という有名な法則だ

要するに全部書き上げてからプロファイラなどで速度のボトルネックになっている
部分を20%〜30%程度書き換えるだけで十分速くなるという事だな
740デフォルトの名無しさん:2010/03/18(木) 11:10:01
試しに、働いている2割のプログラムと、怠けている8割のプログラムを分けてみます。
するとまじめに働いていた集団の8割が怠け始めるそうです。
反対に、怠け者のプログラムの集団では、2割が働き始めるそうです。
741デフォルトの名無しさん:2010/03/18(木) 11:11:50
>>739は誤爆ですスマソ
742736:2010/03/18(木) 11:14:11
>>737
>QTimerはQThreadと一緒に使うことができない
QTimerはQThreadと一緒に(唯一)使うことができる かも

これだけじゃ、どうしょうも無いだけど
743736:2010/03/18(木) 11:18:25
もしかして、イベントループを開始します
って書き忘れていたからかも
744デフォルトの名無しさん:2010/03/18(木) 11:27:13
>>736
Qt 4.6.2のヘルプ見たけど,そのような記述は見つからない。
どこに書いてあったの?
745744:2010/03/18(木) 11:28:21
ああ,ゴメン。ビルドあるいは実行時のエラーのことか。
746736:2010/03/18(木) 11:37:44
絶対、app.exec();をしないとダメなんだね
だから、CLIのプログラムなのにquit()を呼び出さないとダメなのか
ちょっと、面倒くさいね

>>744
やっぱり、イベントループを書き忘れていたから出たエラーでした
すいません、わざわざレスしてもらったのに
747デフォルトの名無しさん:2010/03/18(木) 20:53:12
コンストラクタで例外を投げたくなる処理を書きたくなる時あるじゃん
Qtで書いた時は、どんな感じで実装している?
748デフォルトの名無しさん:2010/03/18(木) 22:30:17
>>734
解決したので自己レス
zlibを1.2.4_0にアップデートしたせいでした。

zlibバージョンを1.2.3_4に戻したらビルドできるようになった。
749デフォルトの名無しさん:2010/03/19(金) 13:38:53
QNetworkRequestでhttpをしているのですが、
他のURLの飛ばされた時の処理も自分で書かないとダメなんですか?
750デフォルトの名無しさん:2010/03/19(金) 14:40:47
はい
751749:2010/03/19(金) 15:10:31
>>750
そうなんですか
ありがとうございます
752デフォルトの名無しさん:2010/03/19(金) 15:27:49
Qt Creator でインクルードパスはどうやって追加しますか?
753デフォルトの名無しさん:2010/03/19(金) 15:49:48
proファイルに
INCLUDEPATH = /path/to/include
754デフォルトの名無しさん:2010/03/19(金) 15:52:33
dクス

画面からは追加出来ないんですか?
755デフォルトの名無しさん:2010/03/19(金) 17:05:23
>>754

> 画面からは追加出来ないんですか?

Qt Creatorでの設定は.proファイルを編集するのが基本。
最初は物足りなく感じるけど,慣れてくるとGUIでチェックボックスやらラジオボタンやら
が沢山並んでいる中で設定するよりスッキリしててこれはこれでアリだなと思うようになった。

ファイル内にコメントも書けるしね。
756デフォルトの名無しさん:2010/03/19(金) 17:14:47
なるほど、.proファイルもソース扱いでつね。
INCLUDEPATHと書いたら、インテリセンスも動いて色が変わったぽいw
757デフォルトの名無しさん:2010/03/19(金) 21:36:39
>>736

>QObject::startTimer: QTimer can only be used with threads started with QThread
>何これ?

言っている通り。どう使えばよいかと教えてくれている。

>QTimerはQThreadと一緒に使うことができない、って訳でいいのかな

使える。QTimerのリファレンスに書いてある。
758デフォルトの名無しさん:2010/03/20(土) 09:00:03
ありがとうございました
759デフォルトの名無しさん:2010/03/20(土) 11:47:35
どういたしました
760デフォルトの名無しさん:2010/03/21(日) 11:30:22
Dialog without Buttonでダイアログを作り、OKとキャンセルのボタンを貼り
それぞれのボタンのon_button1_clicked()をvoid からintに変更しスロット内で
return QDialg::Accept; と QDialog::Reject;を書いたんですが
常に0しか返されません。
QDialogの方で何か処理されてるようですが、
どうすれば良いでしょうか?

761デフォルトの名無しさん:2010/03/21(日) 11:37:01
日本語でどうぞ
762デフォルトの名無しさん:2010/03/21(日) 12:18:01
日本語を学んでください
763デフォルトの名無しさん:2010/03/21(日) 12:29:33
ドキュメント読むには英語学んだほうがいいとおもうけど・・
764デフォルトの名無しさん:2010/03/21(日) 12:53:12
>>763
その前に母国語を学んだ方がいいだろjk
765デフォルトの名無しさん:2010/03/21(日) 17:25:44
FreeBSD8.0-Releaseでpackageから

・qt4-4.5.2
・qtcreator-1.2.1
・qmake-3.3.8_1

の3つをインストールしました。
環境変数 QMAKESPE には freebsd-g++ を設定しました。

コンソールからのコンパイルは問題なくできるようになったのですが
問題はQtCreatorからのコンパイルでしてビルドしようとすると「コンパイル出力」ウィンドウに

 有効なQtバージョンが設定されていません。ツール/オプションで1つ設定してください。
 プロジェクト test をビルド中にエラーが発生しました
 ビルドステップ 'QMake' を実行中
 ビルドを中止しました。

というエラーが発生してしまいます。

実際にツール/オプションの「Qtバージョン」を確認してみると確かに

 自動検出したQt <見つかりません>

と表示されていてQtの検出に失敗しているようです。

コンソールからのコンパイルは問題なくできているのでおそらくQt自体のインストールには
成功していると思うのですが、QtCreatorでビルドできない理由は何でしょうか?
766デフォルトの名無しさん:2010/03/21(日) 19:05:28
またFreeBSDかよ
767デフォルトの名無しさん:2010/03/21(日) 19:19:08
>コンソールからのコンパイルは問題なくできているのでおそらくQt自体のインストールには
>成功していると思うのですが、QtCreatorでビルドできない理由は何でしょうか?
 有効なQtバージョンが設定されていません。ツール/オプションで1つ設定してください。
768デフォルトの名無しさん:2010/03/21(日) 19:34:11
Mac版Qt4.6.2/QtCreator1.3.1でバグっぽいのが。
QtCreator上でソースコード編集中に日本語入力すると余分に改行が入る。

手順的には
1.日本語入力( 下線状態 )
2.returnで確定
3.その後カーソル移動するとなぜか改行

日本語入力中( 変換未確定中 )でもキーイベントが送られちゃってる気がする。
ちなみに、demoのテキストエディタでもなったから、Mac版Qt自体のバグっぽい。
769デフォルトの名無しさん:2010/03/21(日) 19:37:35
>>767
>  有効なQtバージョンが設定されていません。ツール/オプションで1つ設定してください。

具体的にはどのフォルダを設定したらよろしいでしょうか?
デフォルトの「自動検出」でひっかからないのも不思議です・・・
770デフォルトの名無しさん:2010/03/21(日) 20:53:54
>>768
試してみようとしたら、MacのQt 4.6.2のqtdemoでボタンをクリックしても先に進まない。
4.6.1も同じ。4.6.0はうまく行く。

そこで、直接4.6.2のqtdemos/texteditを動かして、手順通りにやってみたけれど再現できなかった。
771デフォルトの名無しさん:2010/03/21(日) 21:30:39
QNetworkAccessManagerを同期で使うにはどうやるんですか?


QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkReply *reply = manager->get(QNetworkRequest(QUrl("http://xxxxx.com")));
//この関数内でそのまま
QByteArray ba = reply->readAll();
//とかしたい


マルチスレッド自体がよくわかっていないのでまずはそこから勉強する必要があるのかも
しれないのですが、とりあえず上記のことは可能なのでしょうか?
可能ならヒントでいいのでお願いします。

一連の getとpost の連鎖処理になるのでSIGNALとSLOTで書いてたらキリがないし
何もわざわざ非同期にするほどの重い処理でもないので同期でやりたいのですが、
もし不可能なら、そういうのを書く場合の定石ってあるのでしょうか?
772デフォルトの名無しさん:2010/03/21(日) 21:32:59
自動検出ってたしかPATHを見てるだけじゃないか?
773デフォルトの名無しさん:2010/03/21(日) 22:00:20
政府と官僚を盲信しすぎだ
たった一握りの人間が産業の興廃を決めるのは共産主義
政府が金銭的に支援すると企業が消費者のことではなくて
役人のご機嫌取りに走るから産業の成長を阻害するんだよ
774デフォルトの名無しさん:2010/03/21(日) 22:26:16
>>773
どこのスレの誤爆ですか
775デフォルトの名無しさん:2010/03/22(月) 01:25:12
>>771
whlie (!reply->isFinished())
QCoreApplication::processEvents();
776デフォルトの名無しさん:2010/03/22(月) 01:25:36
Qtをキュートと呼ぶのに抵抗を感じるのはおれだけですか
777デフォルトの名無しさん:2010/03/22(月) 01:28:13
まぁ、ね。
でも、検索のしにくさに比べたら、どうということはないなぁ。
778デフォルトの名無しさん:2010/03/22(月) 01:29:28
cute だって最後の t は無声音 (kju:t) だぞ
むしろそのまんま
779デフォルトの名無しさん:2010/03/22(月) 02:08:42
>>776
cuteとcue teaのどっちでもいいんだよ。
780デフォルトの名無しさん:2010/03/22(月) 03:01:33
Qt Creatorを使っている人、
解像度どれくらいのディスプレイ使ってる?
781デフォルトの名無しさん:2010/03/22(月) 03:18:15
wqxga
782デフォルトの名無しさん:2010/03/22(月) 07:33:36
wsxga+
783デフォルトの名無しさん:2010/03/22(月) 09:21:18
>>775
できました
ありがとうございます
784デフォルトの名無しさん:2010/03/22(月) 10:16:56
>>776
激しく動悸
785デフォルトの名無しさん:2010/03/22(月) 10:38:40
最近.netからQtに引っ越したんですが・・・
コレはるかに.netより使いやすい・・・
786デフォルトの名無しさん:2010/03/22(月) 10:40:24
ですね
787デフォルトの名無しさん:2010/03/22(月) 10:44:08
それは間違いないな
788デフォルトの名無しさん:2010/03/22(月) 12:21:01
まあQtスレだしな。

Qt - Wikipedia
ttp://ja.wikipedia.org/wiki/Qt
> QtはGTK+やMFC等、他の標準的なグラフィックツールキットに比べて、
> もっとも後発であることもあり、以前から存在するライブラリーの
> よいところを集めたアーキテクチャーとなっている。
> そのため、商業アプリケーションでの採用例が多い他、オープンソース版も
> 用意されているおかげで、KDEという高品質なデスクトップ環境も開発された。
> OpenGLやSVG、XMLといった最新技術にも対応している他、
> 日本語を含む多バイト文字入力フレームワークへも対応している。
789デフォルトの名無しさん:2010/03/22(月) 12:41:23
かなり昔、QtはQuickTimeのパチもんだと思ってた
790デフォルトの名無しさん:2010/03/22(月) 12:48:08
>>788
.NET Frameworkの方が後発だけどなw

>>789
検索は -QuickTime しないとウザイよね
791デフォルトの名無しさん:2010/03/22(月) 13:10:01
gtkの方が先に出てたんだっけ。
792デフォルトの名無しさん:2010/03/22(月) 13:18:34
qtで作成した実行ファイルのサイズの大きさについて質問です。

仮にwindowsのexeとした場合、
cやc++などでwinapiを叩いてguiアプリ作った場合に比べて、どれくらいのサイズ比になりますでしょうか?
793デフォルトの名無しさん:2010/03/22(月) 13:24:57
>>792
作ってみないと何ともいえねんでね。
794デフォルトの名無しさん:2010/03/22(月) 13:30:10
qt4ってqt3と全然違うじゃん
qt4は0から作り直したのか?
795デフォルトの名無しさん:2010/03/22(月) 13:46:49
QtRubyで#!ruby -Kuを指定しても文字化けするんですが
エロい人教えてください
796765:2010/03/22(月) 13:53:14
あの・・・何かアドバイスは無いでしょうか・・・
797デフォルトの名無しさん:2010/03/22(月) 14:01:22
>>792
DLLに分けたら同じくらい小さくなるよ
798デフォルトの名無しさん:2010/03/22(月) 14:12:01
>>793 >>799
レスありがとうございます。
実際試してみないと具体的な数字はやっぱり出てこないですよね。
QtCore4.dllとexeを別にすればかなり最適なサイズになるようで一先ず安心しました。
799>>792 = >>798 (事故レス):2010/03/22(月) 14:13:18
× >>799
○ >>797

失礼しました。
800デフォルトの名無しさん:2010/03/22(月) 14:18:52
>>798
QtGuiやQtCoreを別にして良いんだったら
exe自体は全然小さいよ
でも、QtGui4.dllがデカイw

>>796
FreeBSD以外のプラットフォームにする
801デフォルトの名無しさん:2010/03/22(月) 15:31:56
>>796
商用版にして公式サポート受けろ
802デフォルトの名無しさん:2010/03/22(月) 15:37:57
>>796
Qt Creator の自動検出は PATH にある qmake (or qmake-qt4) が正常に動く場合。
QMAKESPEC は見てないので、QMAKESPEC が必要な環境では自動検出できないし、
マニュアルで指定してもだめ。

mkspecs のあるディレクトリで
ln -s freebsd-g++ default
すれば QMAKESPEC が必要なくなるのでうまくいくかもしれん。
freebsd の package の問題。
803デフォルトの名無しさん:2010/03/22(月) 15:39:52
>>796
FreeBSD使った事ないんでよく解らんけど
パスが通ってないだけなんじゃないの?

コンソールで起動したときには
*rcにQtのインストールパスが書いてあるんで大丈夫とか
804765:2010/03/22(月) 16:22:28
>>802
> Qt Creator の自動検出は PATH にある qmake (or qmake-qt4) が正常に動く場合。
>>803

/usr/local/bin/qmake

をQtCreatorのオプションに直接登録してみましたがそれでも認識されませんでしたorz・・・

Qt一式を全てpackageからインストールしているのに問題が発生すると言うことは
やはりFreeBSDのパッケージの方に問題がありそうですね・・・
805デフォルトの名無しさん:2010/03/22(月) 16:47:14
qt-labs.jpの中の人にインストール作業のFreeBSD編も作ってもらえよ
806795:2010/03/22(月) 16:54:41
ごめんシステムが勝手にEUC-jpに変更していたorz
807デフォルトの名無しさん:2010/03/22(月) 17:07:34
QMainWindowでメニューを作るとき、'&File'てするとショートカットも作られるじゃん
でも、日本語の場合はどうやってやればいいの?
808デフォルトの名無しさん:2010/03/22(月) 17:13:17
>>807
"ファイル (&F)"
809デフォルトの名無しさん:2010/03/22(月) 17:13:53
>>807
ファイル(&F)
810807:2010/03/22(月) 17:41:05
>>808-809
ありがとうございます
811デフォルトの名無しさん:2010/03/22(月) 19:46:41
どうしてFreeBSDのpackagesに間違いが無いと勘違いするひとが後を絶たないのはなぜ
812デフォルトの名無しさん:2010/03/22(月) 19:49:00
>>811
同一人物だから
813デフォルトの名無しさん:2010/03/22(月) 19:58:04
>>804
それって、qmakeまで入れるの?
/usr/local/bin/だけで大丈夫じゃないっけ?
814デフォルトの名無しさん:2010/03/22(月) 20:36:27
QVariantって何するクラスなのか、いまいちわからない
教えてエロい人!!
815デフォルトの名無しさん:2010/03/22(月) 20:59:07
ソースコーディング時点で型が決まらないデータを扱うときに使う
816814:2010/03/22(月) 21:00:14
>>815
>コーディング時点で型が決まらないデータ
これって、コンパイラに依存するデータ型ってことでおk?
817デフォルトの名無しさん:2010/03/22(月) 21:00:25
文字列、整数、実数などいろいろな型の値を扱えるいわゆるバリアント型変数クラス。
818814:2010/03/22(月) 21:04:53
>>817
詳しい所まで、解説ありがとうございました
819817:2010/03/22(月) 21:06:17
レスがかぶった。

コーディング時点で型が決まらないと言うより、何でもブチ込んでおける便利な型と
考えていいんじゃないか?

例えば、Object::setProperty() の第2引数はQVariant&なので、QObjectに好きな型の
変数を名前をつけてプロパティとして関連付けておける。
820765:2010/03/22(月) 21:21:20
>>813
> それって、qmakeまで入れるの?
> /usr/local/bin/だけで大丈夫じゃないっけ?

失礼しました
/usr/local/bin/
です。上記のように入力しましたが結果的にQtの検出には依然として失敗し続けています。

う〜む・・・
FreeBSDのコミュニティに報告した方がいい案件なんでしょうか・・・
821デフォルトの名無しさん:2010/03/22(月) 21:46:11
>>820
>>802 の後半は試したか?
822デフォルトの名無しさん:2010/03/23(火) 01:46:14
>>819
QVariantで扱える型を自分で追加できるのも便利です。
823765:2010/03/23(火) 02:17:46
>>821
> >>802 の後半は試したか?

はい、試してみましたがあいにくうまくいきませんでした・・・
824デフォルトの名無しさん:2010/03/23(火) 09:10:56
Qt には QVector など、STLのコンテナと同等のものがありますが、
それには何か明確な理由があるのでしょうか?
825デフォルトの名無しさん:2010/03/23(火) 11:22:46
QtのオブジェクトはQtがガベコレしてくれるから
826デフォルトの名無しさん:2010/03/23(火) 11:43:29
>>824
foreachを書ける、ストリームにシリアライズ可能とか?
827デフォルトの名無しさん:2010/03/23(火) 11:46:03
実質的に文字コードを気にしなくてよくなるのはありがたいなぁ
828デフォルトの名無しさん:2010/03/23(火) 11:48:13
Qt Creatorでメインプロジェクトの中に複数のサブプロジェクトを含めた構成にしたいんだけど
どうやってCreatorで操作すればいいんだろうか。
例えば以下のような構成のプロジェクト構成にしたい。
 Hoge  <-メインプロジェクト
  +-- GUIアプリケーション(Hoge/HogeMain)  <-サブプロジェクト1
  +-- C++ライブラリ(Hoge/HogeLib)  <-サブプロジェクト2
今Creatorから上記の3つのプロジェクトを作って、保存後にメインプロジェクトを開いてみたけど
サブプロジェクトが含まれてなかった。。。
829デフォルトの名無しさん:2010/03/23(火) 12:39:07
>>828
複数プロジェクトをまとめる専用の.proファイルを使って,その中で,

TEMPLATE = subdirs

と書いておき,実際のサブプロジェクトのディレクトリは,

SUBDIRS = HogeMain \
HogeLib

のように指定する。詳しくは下記参照。

http://qt.nokia.com/doc/qtopia4.2/qmake-variable-reference.html#template

各サブプロジェクトの.proファイル側で出力先ディレクトリが
同じになるように指定しておけば,アプリとDLLの同時デバッグも可能。
830デフォルトの名無しさん:2010/03/23(火) 12:47:48
ありがとうございました
831828:2010/03/23(火) 12:51:56
>>829
なるほど!.proファイルを自分で編集しないとダメなのね。。。
ありがとう。
832829:2010/03/23(火) 15:18:10
ちょっと説明不足だったと思うので>>828の例で補足すると,

1.まずHogeディレクトリの下にサブディレクトリとして/HogeMainと/HogeLib,
ついでに/releaseと/degugも作っておく。

2.Hogeディレクトリの中に複数プロジェクトをまとめるためのHoge.proを作って,
そこに>>829のように記述する。ただ,普通はライブラリの方を先にビルドして欲しい
はずなので順番を変えて,

SUBDIRS = HogeLib \
HogeMain

とする。またここで指定した順番どおりにビルドするための指令として,

CONFING += ordered

も書いておく。

3./HogeLibにHogeLib.pro,/HogeMainにHogeMain.proを置く。これらは通常のプロジェクト
用の.proと同じ内容になるが,以下のようにして出力先を Hoge/debug と Hoge/release に
しておく。

CONFIG(debug) {
DESTDIR = ../debug/
} else {
DESTDIR = ../release/
}


こうしておけば,アプリとライブラリを一緒にデバッグできるようになります。
833829:2010/03/23(火) 15:19:24
>>832
ごめんタイポした。

× CONFING += ordered
○ CONFIG += ordered
834828:2010/03/23(火) 15:31:34
>>832-833
有用な情報ありがとう。
感謝!
835デフォルトの名無しさん:2010/03/23(火) 16:16:40
>ついでに/releaseと/degugも作っておく。

gが全角`o'
836829:2010/03/23(火) 17:08:14
debugがdegugになってるのにも気付いて欲しかったw
837デフォルトの名無しさん:2010/03/23(火) 17:31:28
QFrameって何すんの?
838デフォルトの名無しさん:2010/03/23(火) 17:59:46
839デフォルトの名無しさん:2010/03/23(火) 20:29:14
Qtで、アプリケーションにフォーカスがないときに、キーボードイベントを
とる事(グローバルフック?)って出来ますか?
今押されてるキーを表示するようなユーティリティを作ろうと思ってます。
840デフォルトの名無しさん:2010/03/23(火) 21:08:27
>>839
組込みLinux用のQtはできる。
841デフォルトの名無しさん:2010/03/23(火) 21:37:00
普通はそういうのは作らんなぁ
端末にバインドしてない keylogger みたいなもんか
842デフォルトの名無しさん:2010/03/24(水) 00:02:40
QtRubyってQThread無いの?
教えてエロい人!!
843デフォルトの名無しさん:2010/03/24(水) 00:21:45
Rubyってネイティブスレッド使えたっけ?
844デフォルトの名無しさん:2010/03/24(水) 00:24:55
ui->setupUi(this);
QGraphicsBlurEffect* blur_effect = new QGraphicsBlurEffect(this);
blur_effect->setBlurRadius(10);
QPixmap *image = new QPixmap(tr(":/images/aaaa.jpg"));
ui->label->setPixmap(*image);
ui->label->setFixedSize(image->size());
ui->label->setGraphicsEffect(blur_effect);

Windows版だと上手く動くのに、Mac版だとうまく動かない(エフェクトがかからない)んだけどなんでだろ

環境
Windows:
Windows Vista
Qt 4.6.2
Mac:
Snow Leopard
Qt 4.6.2
845デフォルトの名無しさん:2010/03/24(水) 00:31:54
PythonじゃなくてRuby選んでる時点で、いろんなライブラリの対応が二級市民になる
ことを覚悟してるんだろ?wxもgtkもさ。
846デフォルトの名無しさん:2010/03/24(水) 01:11:12
>>760
スロットはvoid型しかできません。
そうしたいなら、signalを定義してスロットからそのシグナルを発生させてください。

signals:
void button1_clicked(int);
private slots:
void on_button1_clicked(){
...
// return QDialog::Accept;
emit button1_clicked(QDialog::Accept);
...
// return QDialog::Reject;
emit button1_clicked(QDialog::Reject;
...
}
847デフォルトの名無しさん:2010/03/24(水) 08:32:35
>>846
> スロットはvoid型しかできません。
戻り値があっても構いません。
スロットは、メタオブジェクトにその情報が格納され、シグナルと接続でき、メタ情報からの
メソッド呼出しなどができる他は、普通のメソッドと同じです。シグナルによって呼ばれた場
合には、戻り値が使われないだけで、単にスロットをメソッドとして呼出して、戻り値を得る
ようにするのは、問題なくできます。
848842:2010/03/24(水) 08:39:08
>>845
知ってるよ
でも、自分では選択権が無いもんでね
849デフォルトの名無しさん:2010/03/24(水) 08:50:53
横からですが
ありがとうございました
850デフォルトの名無しさん:2010/03/24(水) 11:34:04
CFLAGSに"-D_USE_32BIT_TIME_T"を追加したいのですが、
.proにはどのように書けば良いのでしょうか?
今はMakefileのCFLAGSに、直接手で追加しています…
851デフォルトの名無しさん:2010/03/24(水) 12:31:49
>> 842
ありません。
852デフォルトの名無しさん:2010/03/24(水) 12:34:35
>>850
普通に DEFINES += 使えばいいんじゃね?
あとは QMAKE_CFLAGS_DEBUG とか QMAKE_CFLAGS_RELEASE とか。
Assistantで 「qmake Variable Reference」探してみて。

853デフォルトの名無しさん:2010/03/24(水) 14:15:07
854デフォルトの名無しさん:2010/03/24(水) 15:07:31
Qt Creator プラグインの開発を始めたので、近日中に公開しようと考えているのですが、
どこで公開するのがいいのでしょうか?

おすすめの場所があったら教えてください。
855850:2010/03/24(水) 15:41:15
>>852
できました!ありがとうございます。
856デフォルトの名無しさん:2010/03/24(水) 16:03:58
857デフォルトの名無しさん:2010/03/24(水) 16:47:29
>>854
qt-apps.org
858デフォルトの名無しさん:2010/03/24(水) 20:53:56
859デフォルトの名無しさん:2010/03/24(水) 21:22:44
>>851
それじゃ、スレッド使った処理は書けないの?
860デフォルトの名無しさん:2010/03/24(水) 23:34:57
>>859
Re: [Kde-bindings] Using threads with QtRuby - msg#00122 - kde-bindings
http://osdir.com/ml/kde-bindings/2010-02/msg00122.html

phosphorescence: Where has Qt::Thread gone?
http://phosphor-escence.blogspot.com/2009/05/where-has-qtthread-gone.html
861839:2010/03/25(木) 13:21:36
>>840-841
ありがとうございます。環境依存になってしまうって事ですね。
今回はWindowsを対象にしてるので、WinAPIで考えてみることにします。
862デフォルトの名無しさん:2010/03/26(金) 11:32:20
ありがとうございます
863デフォルトの名無しさん:2010/03/26(金) 15:19:10
PyQtでself.trを使うとUTF-8のとき文字化けします
espおながいします
864デフォルトの名無しさん:2010/03/26(金) 19:23:17
>>863
QTextCodec.setCodecForTr(QTextCodec.codecForName('UTF-8'))とすると文字化けせずに表示されました。
865デフォルトの名無しさん:2010/03/26(金) 22:21:52
>>864
ありがとうございますた
866デフォルトの名無しさん:2010/03/28(日) 07:14:20
867デフォルトの名無しさん:2010/03/28(日) 10:41:13
Designerで、一旦グループボックス内に、ラジオボタンなどを配置すると
後から高さや幅を変更できません
どうにかならない?
868デフォルトの名無しさん:2010/03/28(日) 11:13:12
>>867
>どうにかならない?
できます。
http://doc.trolltech.com/4.6/layout.html
http://doc.trolltech.com/4.6/widgets-and-layouts.html
レイアウトのリファレンスを読めばよい。
869デフォルトの名無しさん:2010/03/28(日) 17:13:54
QNetworkAccessManager *manager;
でpostするときにpostするデータを

QUrl params;
params.addQueryItem("id", id);
params.addQueryItem("password", pw);
QByteArray paramdata(params.toString().toAscii());
manager->post(request, paramdata);

してるんですが、このさいparamdataには"?id=hoge&password=hage"と
先頭に?が入るようで、これがpost()の際に邪魔になるようです。
?を毎度paramdataから取り除くの面倒なんですが
最初から?がダブらないようにするにはどうやるんでしょうか?
870デフォルトの名無しさん:2010/03/28(日) 17:55:53
QString params = QString("id=%1&password=%2").arg(id, pw);
QByteArray paramdata(params.toAscii());
じゃダメなの?
871デフォルトの名無しさん:2010/03/28(日) 18:17:16
いや、全然ダメじゃないんだけどせっかくaddQueryItem()とかいうのがあるんで
これ使ってできるはずなんじゃないかな?と
872デフォルトの名無しさん:2010/03/28(日) 19:02:22
MinGW版でphonon使うとogg再生できないんですけど
みなさんもそうですか?
873デフォルトの名無しさん:2010/03/28(日) 22:19:58
ogg以前にMinGW版でPhonon呼び出せなかった気がするんだが
PhononはDirectShow9を要求するけどMinGWはそれをコンパイルできないから使えないって話をどこかで読んだ
874デフォルトの名無しさん:2010/03/28(日) 23:44:42
875デフォルトの名無しさん:2010/03/29(月) 00:14:33
>>874
それだわ!ビンゴ
876デフォルトの名無しさん:2010/03/29(月) 01:58:58
file = new QFile(media.fileName(), this);
file->open(QFile::ReadOnly);
in.setDevice(file); //inはQDataStream型
char* buf = new char[4];

sampleBasePos+=in.readRawData(buf, 4);
qWarning() << sampleBasePos;
if(strcmp(buf, "RIFF"))
{
qWarning() << "Not RIFF";
qWarning() << buf;
qWarning() << strlen(buf);
return;
}
以下Wavファイルのヘッダ読み込み処理
}
という感じのメディアソースが変更されたら呼ばれるスロットを作っているのですが
実行してみると
in.readRawData(buf, 4);で4バイト分ファイルから読もうとしているのに対して
qWarningの出力には
4
Not RIFF
RIFF(

9
となぜか"RIFF" + 文字化けした何かというように9バイト読み込まれています。
文字化けの内容は実行するごとに変化し、Warningに全くひっかからずに最後まで通ってしまうこともあります。
原因は一体何なのでしょうか?
877デフォルトの名無しさん:2010/03/29(月) 02:04:05
'\0'で文字列を終わらせてないから。
読み込みは正しく4バイトだけ読み込まれてると思うぞ。
878デフォルトの名無しさん:2010/03/29(月) 02:07:22
なるほどありがとうございます。
長文すいませんでした。
879デフォルトの名無しさん:2010/03/29(月) 14:27:29
SIGNAL-SLOTでSLOT側の関数で
SIGNALを発したオブジェクトが何であるかを取得できるでしょうか?
念頭においてるのはpushButtonのclicked()です。
880デフォルトの名無しさん:2010/03/29(月) 15:07:01
QObject::sender() で取得できる。

QPushButton *button = qobject_cast<QPushButton*>(sender());

とかやればよい。
881デフォルトの名無しさん:2010/03/29(月) 15:19:36
>>880
即レス大変感謝です
思うようにいきました
882デフォルトの名無しさん:2010/03/29(月) 15:26:03
つか、C#の delegateでsenderとかよりシンプルでますます気に入りますたw
883デフォルトの名無しさん:2010/03/29(月) 15:49:08
よこからありがとうございました
884デフォルトの名無しさん:2010/03/29(月) 15:50:34
C++ とは思えないシンプルさです
moc の追加仕様なんて気にしたら負けです
本当にありがとうございました
885デフォルトの名無しさん:2010/03/29(月) 20:46:14
>>882
比べるならλ式と比べてやれや
886デフォルトの名無しさん:2010/03/30(火) 00:38:12
QtCreatorのエディタの色付けの「型」って
classじゃなくてプレフィックスがQの文字列なんだね
ためしにQTaroとかでも紫色になるし・・
887デフォルトの名無しさん:2010/03/30(火) 01:11:15
>> 886
src/plugins/cppeditor/cpphighlighter.cpp
void CppHighlighter::highlightWord(QStringRef word, int position, int length)
{
  // try to highlight Qt 'identifiers' like QObject and Q_PROPERTY
  // but don't highlight words like 'Query'
  if (word.length() > 1
   && word.at(0) == QLatin1Char('Q')
   && (word.at(1).isUpper()
   || word.at(1) == QLatin1Char('_')
   || word.at(1) == QLatin1Char('t'))) {
    setFormat(position, length, m_formats[CppTypeFormat]);
  }
}
888デフォルトの名無しさん:2010/03/30(火) 11:34:45
それだとQtaroもQJiroもQ_taroも紫色になるけど,Qjiroはならないねw
889デフォルトの名無しさん:2010/03/30(火) 14:16:46
そうだね
890デフォルトの名無しさん:2010/03/30(火) 19:54:58
PyQtで質問です
QPushButton に connect で SIGNAL clicked() を
自分のクラスに作った SLOT で受けてるのですが
self.sender().text() で取得したボタン表示文字列の
型が何か分かりません
unicode(self.sender().text()) だと unicode で取得出来たのですが
self.sender().text().decode('utf-8') みたいにすると
str ではないと怒られます
891デフォルトの名無しさん:2010/03/30(火) 19:57:21
自己解決しますた
type(self.sender().text())

PyQt4.QtCore.QString
だと分かりました
892デフォルトの名無しさん:2010/03/30(火) 21:29:45
>>888
Qjは、予約されていないからです。
893デフォルトの名無しさん:2010/03/30(火) 21:38:53
>>887
その仕様なのにオプション設定のカラースキームで「型」とするのは紛らわしいよな
894デフォルトの名無しさん:2010/03/30(火) 23:44:06
初心者な質問ですいません
Qtでlibファイルをリンクするにはどうしたらよいのでしょうか?
895デフォルトの名無しさん:2010/03/30(火) 23:58:53
>>894
気合いと根性とちょっとのgnu cの知識
qtは関係ない
896894:2010/03/31(水) 00:15:57
自分で調べて

外部ライブラリをリンクする方法は、2通り。
・プロジェクト設定でリンクするlibファイルを設定する方法。
・使う箇所だけで#pragma comment(lib, "xxxx.lib");と読み込ませる方法。

との記事を見つけたので
プロジェクト設定をいじれるところがどこかあるのかなーと思ったのですが。
#pragma commentについてはminGW版ではignoreされたので・・
897デフォルトの名無しさん:2010/03/31(水) 01:26:47
>>880
sender()なんてあったのか。
ボタンを全部同じスロットで受け取って、sender()->objectName()使って処理を振り分けることも可能なのね。
898デフォルトの名無しさん:2010/03/31(水) 06:34:25
>>892
>>887の書いてくれたコードが読めないの?
それとも>>888の最後にwが付いてるのにマジレスしてんの?
899デフォルトの名無しさん:2010/03/31(水) 06:46:36
>>898
naming guidelineをしらないの?
900デフォルトの名無しさん:2010/03/31(水) 09:30:43
899はKYな子
901デフォルトの名無しさん:2010/03/31(水) 12:45:16
>>899
話の主旨がわかってない。>>900の言うとおり。
902デフォルトの名無しさん:2010/03/31(水) 12:47:59
>>897
そうそう。例えばラジオボタンを沢山並べて,それらのclicked()シグナルにconnectするスロット関数を一つに
できるので便利だよ。
903デフォルトの名無しさん:2010/03/31(水) 15:02:36
>>897
http://doc.qt.nokia.com/4.6/widgets-calculator.html
これのCalculator::digitClicked()でまさにその処理を書いてるね
904デフォルトの名無しさん:2010/03/31(水) 16:32:23
要はvcl
905デフォルトの名無しさん:2010/03/31(水) 17:52:29
コンパイルの速度が気になってなかなか移行しきれない俺Delphian
906デフォルトの名無しさん:2010/03/31(水) 18:28:11
>>905
といかC++はクソ難しい(さらに変態的になりそうな現状もある)からDelphiばっか使っていた方は
発狂すると思うぞ?
907デフォルトの名無しさん:2010/03/31(水) 19:50:42
馬鹿除けトラップになってくれててありがたい
908デフォルトの名無しさん:2010/03/31(水) 20:00:30
>>907
> 馬鹿除けトラップ
でもそのせいで俺らだっていちいち苦労するぞ
909デフォルトの名無しさん:2010/03/31(水) 20:37:01
>>905
>>292
910デフォルトの名無しさん:2010/03/31(水) 22:05:39
openssl1.0.0がリリースされてんだね
911デフォルトの名無しさん:2010/03/31(水) 22:23:58
どなたかお知恵を。。
グリッドレイアウトでウィジェットを多数配置しているのですが、
そのうちのいくつかを無効化しようとしています。
.hide()で隠すことで対応したのですが、
グリッドの一行を全てhide()すると、その行がグリッドレイアウトで
つめられてしまい、ウィジェットの位置が変わってしまいます。

位置が変わらないように、
グリッドの一行を空のままスペースをあけるような事はできますでしょうか?
hide()以外でもなんでもかまいません。

よろしくお願いします。
912デフォルトの名無しさん:2010/03/31(水) 22:46:59
HTMLパーサってないのですか?
913デフォルトの名無しさん:2010/03/31(水) 23:12:36
>>911
無効化だけしたいならQWidget::setDisabledを呼べばいい

>>912
4.6から追加されたQWebElementがそれらしい機能なんじゃないかな
914デフォルトの名無しさん:2010/04/01(木) 00:41:58
915デフォルトの名無しさん:2010/04/01(木) 00:46:08
916902:2010/04/01(木) 06:33:38
>>914
うん。そっちも使ったことあるけど、なんか>>880みたいなコーディングの方を
書いちゃうんだよね。それとQButtonGroupで何か不具合に出会った記憶が...

時間がなかったので、あまり調べもせずに..>>880式の書き方に変えたので
覚えてないんだけど(完全無責任モード)。
917デフォルトの名無しさん:2010/04/01(木) 08:45:26
QButtonGroup は使わない方が良いってことかな
918902:2010/04/01(木) 09:51:25
>>917
あまりに無責任なので,ちょっと手元で試してみたけど,普通に使う分には問題なかった。
不具合に出会ったときは setProperty() とか使ってゴニョゴニョ書いてたんだけど,
何をやったらどうおかしかったのか思い出せない...ので,気にしないで。

ただ,コーディング量は QButtonGroup 使っても共通スロット関数で sender() 使っても
大差ないのでお好きな方でどうぞってところかな。
919デフォルトの名無しさん:2010/04/01(木) 10:41:18
>>915
なんだぁ、jomの話じゃん。今のQt Creatorではデフォルトでnmakeの代わりにjomが使われる
から,今のスピードに満足できていない人には情報として役に立たないよぉ。
920911:2010/04/01(木) 12:33:47
>>193
非表示にしたいため、setDisabledでは対応できませんでした。
gridに頼らずやるしかないのでしょうか。。。
921デフォルトの名無しさん:2010/04/01(木) 12:57:10
>>919
そりゃDelphiやC#とかヘジルスバーグ言語と
C++のコンパイル速度を比較したらいかんよw
922デフォルトの名無しさん:2010/04/01(木) 15:11:05
>>913
さっと見てみましたがQNetworkAccessとあわせて使うには
ちょっと大げさな感じになっちゃうみたいですね・・
923デフォルトの名無しさん:2010/04/01(木) 21:16:28
>>920
スペーサーかダミーのWidgetに差し替えるか、GridLayoutのサブクラスを作って
位置が変わらないようにオーバーライドするとか・・・。よく調べれば何か方法はあるはず
924デフォルトの名無しさん:2010/04/02(金) 00:48:45
>>920
ttp://qt.nokia.com/doc/4.6/eventsandfilters.html#event-filters の機能で
あるプロパティ(例えば Disabled)が true の時は PaintEvent をフィルタしてしまうのはどうかな
できるかどうかわかんないけど試す価値はありそう

もしくは ttp://qt.nokia.com/doc/4.6/qgraphicseffect.html で描画を上書きするって方法もありかも
925デフォルトの名無しさん:2010/04/02(金) 07:32:13
>>919
真実と嘘の区別が付かないのが、チョウセンヒトモドキ
926デフォルトの名無しさん:2010/04/02(金) 07:52:03
JavaScriptでしばしばこういうコード書いているけど、これをC++(QT)で書くとどういう感じになる?
function getValue(Form,Target){
var value = document.getElementById(Form).value; // 変数Form名のIDのフォームの値をvalueに代入
value = window.prompt("文字を入力",value); // 入力フォームを表示。valueを入力プロンプトに渡す。(上の行と1本かできるの事は気にしないで)
document.getElementById(Target).value = value; // 変数TargetのIDのフォームにvalueを代入
}
これをQtで書くとどういう感じになるのかな?
FormとTargetの値(参照元のフォーム名と代入先のフォーム名)が変化するんだけど。

あと、
form = document.getElementById(Form+'_name')
みたいな表現ってできない?
927デフォルトの名無しさん:2010/04/02(金) 12:24:02
>>925
意味不明。「真実」とか「嘘」という言葉の使い方が不適切だと思われ。
では国語の問題です。

問1:ここであなたの言う「真実」とは何を指しているでしょうか?

問2:ここであなたの言う「嘘」とは何を指しているでしょうか?
928デフォルトの名無しさん:2010/04/02(金) 12:37:05
解答を知らない人が出題しちゃってる。
929デフォルトの名無しさん:2010/04/02(金) 12:38:40
不適切で不明だから出題して試してるんだろ。
930デフォルトの名無しさん:2010/04/02(金) 12:40:50
添削できない人間が何を試すんだか。
931デフォルトの名無しさん:2010/04/02(金) 12:42:07
要するに馬鹿の癖にプライドが高いから「お訊ねする」ことができなくて
まったく文脈のズレまくった試験官キャラやっちゃってるんでしょw
932デフォルトの名無しさん:2010/04/02(金) 12:43:35
意味不明じゃ添削のしようもない。要するに日本語がおかしくて何が言いたいか
わからんつーこと。書いた本人に適切な言葉で説明することを求めてる。
933デフォルトの名無しさん:2010/04/02(金) 12:44:48
スレが伸びてるから覗いてみればwww
934デフォルトの名無しさん:2010/04/02(金) 12:49:36
しかしjomで速くなる実感はあまりないな。コア数の多いCPUのマシンだと違うのかもしれないね。

>>925はそれを「嘘」と言ってるのかな?
正直俺も何が言いたいのかよくわからん。
935デフォルトの名無しさん:2010/04/02(金) 13:20:23
>>925はゆとりだから、何を言っても無駄。
936デフォルトの名無しさん:2010/04/02(金) 13:51:31
コンパイル速度が気になるならPyQtでも使えばいいと思うのだがPyQtで書いたクラスとC++で書いたクラスの相互利用って、簡単にはできないの?
937デフォルトの名無しさん:2010/04/02(金) 14:00:16
>>926
QWebFrame::evaluateJavaScript() を使う方法もあるけど、
C++ を使いたいなら QWebElement を使う。

適当なサンプル
QWebElement form0 = ui->webView->page()->mainFrame()->documentElement().findFirst("input#form0");
if (!form0.isNull()) {
QString value = form0.attribute("value", "");
QString result = QInputDialog::getText(this, tr("Input Text"), tr("Value:"), QLineEdit::Normal, value);
if (!result.isNull()) {
QWebElement form1 = ui->webView->page()->mainFrame()->documentElement().findFirst("input#form1");
form1.setAttribute("value", result);
}
}

938デフォルトの名無しさん:2010/04/02(金) 14:01:41
PythonとC++じゃ実行速度が違いすぎるでしょう。コンパイルの速さ云々以前の問題じゃないのかな。
プログラムの目的にもよると思うけど。
939デフォルトの名無しさん:2010/04/02(金) 17:58:41
>>938
そこまで速度要求されないものだと、そんなに変わらんよ。
それに開発中だと、動作速度よりも、コンパイルしなおさずに使える方が嬉しいこともある。
Pythonで動くものを作って、できるだけQtライブラリを使う方針でコード書けばC++への移植もそう難しくない。
940デフォルトの名無しさん:2010/04/02(金) 18:49:16
PyQtで、Qt Creatorみたいにペタポト開発できる環境ってあるの?
この話って>>905のDelphianが発端だから、そういのがないと厳しいと思う。
941デフォルトの名無しさん:2010/04/02(金) 21:06:23
>>940
ポトペタでuiを作ったら、ui読み込んでGUI構築できる。
uiからpyファイルを生成するuicもある。
942デフォルトの名無しさん:2010/04/02(金) 21:41:52
それは単なるGUIデザイナ。DelphiもQt CreatorもGUIデザイナとIDEが統合されて、
GUI設計からソースコード編集、ビルド、デバッグまでが一貫して行える本格的RADツール。

Delphi使いなら、当然ここまで要求したくなると思うよ。開発効率が全然違うもの。
943デフォルトの名無しさん:2010/04/02(金) 21:42:19
SIP
944デフォルトの名無しさん:2010/04/02(金) 21:43:27
Delphi使いがDQNだということはわかった
945デフォルトの名無しさん:2010/04/02(金) 21:49:26
現実にQt Creatorがあるのに,なぜにDQN?
946デフォルトの名無しさん:2010/04/02(金) 21:50:03
>>944
またゆとりのオマエか。
947デフォルトの名無しさん:2010/04/02(金) 23:02:48
複数の機能が一つのツールにまとめられているのか複数のツールに分かれているのかが
それほど重要とは思わないけど、EricみたいなIDEを使えばデザイナやデバッガや
インタラクティブシェルやヘルプや静的チェックやユニットテストやバージョン管理なんかを
統合できるな。
948デフォルトの名無しさん:2010/04/02(金) 23:15:54
>>947
ただまとめられてるだけじゃなくて、シームレスってところが重要なんだよ。

例えばQt Creatorでボタンを貼って、右クリックで[Go to slot]すると、
スロット関数のスケルトンが作られてて、中にコードを書いていくだけでいい
とか、デバッグ中にエディタ上で変数にカーソルを当てると、値がツールチップ
で表示されるとか。

こういうところがサクサク仕事が出来るかどうかに相当関わってくると思う。
949デフォルトの名無しさん:2010/04/02(金) 23:31:16
Paythonは好きだけど,所詮はスクリプト言語。ログファイルから必要な項目だけを抽出するような
仕事をササっとやるとか,GUI付きでもアクセサリ的な小物ソフトを作るのに向いてる。

画像処理とかハードウェア制御を伴うような本格的な大物アプリは,やはりコンパイラ言語の
守備範囲だろう。こういうのをやる場合には,RADツールも本領を発揮するし。

目的に応じて使い分ければいい。
950デフォルトの名無しさん:2010/04/03(土) 00:52:25
>>948
それは、C++とPythonの生産性の差を覆せる程の差とは思えないな。
uiをそのまま使う事もできるから、uicを呼び出すために明示的に右クリックから
コード生成をクリックする必要はあるけど、その後に右クリックからスロットに
対応する為のコード自動生成までは同じだし。

むしろ、 PyQt だとスロットとかいちいち宣言しなくても button.clicked.connect(somefunc) みたいに
普通の関数につなげられたり、自動生成以外のところで圧倒的にC++よりも柔軟で便利。
そして何より、C++はコンパイル遅いし。

>>949
Pythonはスクリプト言語じゃないよ。スクリプティングにも使えるけど、本物のプログラミング言語。
画像処理を伴う場合も、画像処理ライブラリがC言語で書かれているし、足りない部分は自分で
Cで書ける。でも、画像処理アプリでも実際に画像処理している部分は2割だったりする。
残りの8割はPythonで書いた方が効率的。
951デフォルトの名無しさん:2010/04/03(土) 03:11:12
>>948
暮暮厨うぜ
952デフォルトの名無しさん:2010/04/03(土) 07:21:38
>>950
> Pythonはスクリプト言語じゃないよ。

そりゃあんたの勝手な定義で無理がある。いろんなところでスクリプト言語に分類されてる。
http://ja.wikipedia.org/wiki/Python

> 画像処理を伴う場合も、画像処理ライブラリがC言語で書かれているし、足りない部分は自分で
> Cで書ける。でも、画像処理アプリでも実際に画像処理している部分は2割だったりする。
> 残りの8割はPythonで書いた方が効率的。

偏愛きもいよ。
足りない部分をCで書くくらいなら、最初から全部C++で書いた方がずっと効率的。
自分でCで書いた部分のデバッグはどうするの?
ハードウェア制御だってそう。市販のI/Oボードに付属のDLLはPythonから直接使え
ないだろ?

インタープリタ言語にはインタープリタ言語の得意分野がある。それを捻じ曲げて
まで、C++を嫌う理由が「いちいちコンパイルしなければならない」だけなの?
コンパイル遅いと言うけど,プリコンパイルドヘッダー使えば充分速いし,
仕事の息抜き時間になってちょうどいい。
カットアンドトライですぐコンパイルかけるようなプログラミングの仕方してると
気になるのかもね。
実行の遅さの方がずっと問題。人様に使っていただくプログラムならなおさら。

だいたいあんたC++や本格的なRADツールの体験はどれだけあるの?
いままで書いた最も大きなプログラムってどんなもの?
953デフォルトの名無しさん:2010/04/03(土) 07:32:00
>>952
だいたいあんたC++や本格的なRADツールの体験はどれだけあるの?
いままで書いた最も大きなプログラムってどんなもの?
954デフォルトの名無しさん:2010/04/03(土) 07:47:18
C++ Builderの経験10年ほど。Qt はここ1年くらい(Qt Creatorの登場以降)。
一番大きなプログラムは,数億\単位の装置をオペレーターが使う制御ソフトで,
単純I/Oだけじゃなくてモーションコントローラーや自社開発ボードのハードウェア
制御,画像処理,ZOOM IN/OUTを含んだ描画処理などを含む大掛かりなもの。

大体あんたずれてるよ。突っ込むんなら Python の経験はどれくらいあるのか
聞くんじゃないのか?

他人のカキコを借りてあえて言う。「またゆとりのオマエか」

>>951 もずれてる。>>948は実在するものの話をしてるのに「暮暮厨うぜ」だって。
またゆとりのオマエか。
955デフォルトの名無しさん:2010/04/03(土) 08:59:14
あんたって誰のこと?
956デフォルトの名無しさん:2010/04/03(土) 09:11:15
文脈から明らか。ゆとりは国語ができないんだね。
957デフォルトの名無しさん:2010/04/03(土) 09:20:45
ゆとりなの?
958デフォルトの名無しさん:2010/04/03(土) 09:54:14
なんか一匹短いコメントしか書かないズレまくりの虫が紛れ込んだおかげで、良スレが台無しだ。
959デフォルトの名無しさん:2010/04/03(土) 10:10:46
>>920
>非表示にしたいため、setDisabledでは対応できませんでした。
QGraphicsOpacityEffect で透明にするとどうですか。
960デフォルトの名無しさん:2010/04/03(土) 10:40:46
>>952
>ハードウェア制御だってそう。市販のI/Oボードに付属のDLLはPythonから直接使え
ないだろ?

無知って怖いな
961デフォルトの名無しさん:2010/04/03(土) 10:51:00
>>952
>そりゃあんたの勝手な定義で無理がある。いろんなところでスクリプト言語に分類されてる。
そりゃあんたの勝手な解釈で無理がある。いろいろなところでスクリプティングにも適しているけれど、
大規模アプリケーションにも適している、本物のプログラミング言語とされている。
http://www.python.jp/doc/2.5/tut/node3.html
http://en.wikipedia.org/wiki/Python_(programming_language)
>Python is a general-purpose high-level programming language

DLLは、C#でdllを呼ぶのと同じくらいに簡単に呼べる。
実行時間は20:80の法則があるので、時間のかかっている部分だけ、より良いアルゴリズムや
データ構造を選んだり、画像処理みたいな部分はCで書けば良いだけ。

そんだけ経験あるんだったら、RADツールで削減できる手間なんて最初のちょろっと
だけだって気づかない?
RADの自動生成コードばかり使っていて、自分でコードの再構成をしないまま
肥大化すると、そのうちスコープの大きい変数が散らばったり、MVCが分離できていなくて
一部の機能をテストするためになぜかGUIを人間が操作しないといけないクソコードになるよ。
962デフォルトの名無しさん:2010/04/03(土) 12:42:16
Cで書かれたライブラリを呼べるから本物のプログラミング言語だ(キリッとか
high-level programming languageが本物のプログラミング言語なの?w
その訳語が何か理解できてる?
963デフォルトの名無しさん:2010/04/03(土) 12:44:14
>>961
> そりゃあんたの勝手な解釈で無理がある。いろいろなところでスクリプティングにも適しているけれど、
> 大規模アプリケーションにも適している、本物のプログラミング言語とされている。
> http://www.python.jp/doc/2.5/tut/node3.html
> http://en.wikipedia.org/wiki/Python_(programming_language)

前者は作った方の言い分だからねぇ。後者だってPythonだけについて書いたwikipediaのページだから、
作った関係者が書いた可能性大。俺が挙げたページは同じwikipediaでも「スクリプト言語」のページだから、
より公正だと思うが。

> DLLは、C#でdllを呼ぶのと同じくらいに簡単に呼べる。
Cの関数の形をしたいわゆるWINAPI(__stdcall)呼び出し規約のDLLだけでしょ? まぁ、市販ボードのDLLなら
大抵はそうだけど、社内ライブラリなんかクラスDLLにすることが多いから無理。

> 実行時間は20:80の法則があるので、時間のかかっている部分だけ、より良いアルゴリズムや
> データ構造を選んだり、画像処理みたいな部分はCで書けば良いだけ。
だから一部だけCで書くなんて非効率。しかもC++じゃなくてCじゃねぇ。上のDLLと同じ方法になるんだろうけど、
デバッグも面倒だよね。

> そんだけ経験あるんだったら、RADツールで削減できる手間なんて最初のちょろっと
> だけだって気づかない?
全く逆。RADツールのおかげで、顧客ごとのカスタマイズを手早くやってこれた。おかげでホクホクだ。
で、何使ったことあるの? どんなプログラム作ってるの? 聞くの二度目なんだが。

> RADの自動生成コードばかり使っていて、自分でコードの再構成をしないまま
> 肥大化すると、そのうちスコープの大きい変数が散らばったり、MVCが分離できていなくて
> 一部の機能をテストするためになぜかGUIを人間が操作しないといけないクソコードになるよ。
そんなのは仕事の出来ないヤツのやることだ。
964デフォルトの名無しさん:2010/04/03(土) 12:54:34
>>952
そのページ見ても、Pythonがスクリプト言語だという記述は見られないけど?

「スクリプト言語」という単語には、スクリプティングに使われる言語という意味と、
スクリプティング用途の為に開発されたという意味の2種類がある。
そのページで「スクリプト言語としての特性から」というのは、明らかに前者。

英語のWikipediaのページにも、General purpose language と書いてある。
Pythonを「スクリプト言語だからスクリプト用途にだけ使っとけ」なんて言ってるのはおまえだけ。
965デフォルトの名無しさん:2010/04/03(土) 13:01:29
>>964
リンク間違えた。スマソ。

http://ja.wikipedia.org/wiki/スクリプト言語

> Pythonを「スクリプト言語だからスクリプト用途にだけ使っとけ」なんて言ってるのはおまえだけ。

そんなことは言っていない。 つ >>949

>>962
ほんとだ。high-level programming language = 高級言語。Pythonが高級言語なのは当たり前じゃん。
966デフォルトの名無しさん:2010/04/03(土) 13:02:17
もしPythonとCを混ぜるのがC++だけを使うより本当に非効率だとしたら、
C++で書かれたmonotoneみたいなツールよりも、Pythonと一部だけCで書かれた
MercurialやBazaarの方が広く使われているのはなぜ?

いい加減スレチだな、スマソ
967デフォルトの名無しさん:2010/04/03(土) 13:05:47
スクリプト言語の対比として本物の言語と言ってたんだが、汎用言語って言い直すわ。

>>965
「所詮はスクリプト言語」と言っているよね?スクリプティング目的の言語だから、
それ以外では非効率という意味で言ってたんだよね?
だから .>>964 みたいに反論したんだが。

Pythonは汎用言語で、大規模アプリケーション開発にも適しています。
↑これに反論はない?
968デフォルトの名無しさん:2010/04/03(土) 13:17:37
大規模なプログラミングをするのにC++よりPythonの方が良いなあって
人がいたらダメなの?

だけど世の中には人殺しもロリコンも居るんだ。
「Pythonは大規模なプログラミングに向かないと、お前もそう思え」と
押しつけるぐらいの変態は居るだろうな。
969デフォルトの名無しさん:2010/04/03(土) 13:21:08
あぽんしたいからID付けようぜ
970デフォルトの名無しさん:2010/04/03(土) 13:37:28
>>966
バージョン管理システムくらいなら、どっちもありなんじゃないの。
971デフォルトの名無しさん:2010/04/03(土) 13:48:40
いい加減スレチ。
そもそも、C++のコンパイル速度が気になるDelphi使い (>>905) に PyQt を勧められるかどうかっていう話だろ?
>>940 でポトペタが必要
>>941 でポトペタあるよ
>>948 でスロットからスケルトン作れるのかという話に、
>>950 でEricというIDEならできるという回答

なのに、なんで >>949 はいきなり C++ vs Python の話を始めているんだ?
C++ のコンパイル速度が気になる Delphi 使いがQtを使うという前提はどこいった?
972デフォルトの名無しさん:2010/04/03(土) 13:50:38
>>966
> もしPythonとCを混ぜるのがC++だけを使うより本当に非効率だとしたら、
自分でやってみて書いてる?そもそもC++が使えなくてCだけだってところで×なんだが。

>>967
> 「所詮はスクリプト言語」と言っているよね?スクリプティング目的の言語だから、
> それ以外では非効率という意味で言ってたんだよね?

規模が大きくなったり、Pythonだけで済まない部分が増えると非効率。
実行速度が重要な場合も向かないと思う。
実際、FFTだの特殊な画像フィルタを含むアプリを書いてるが、こんなのPythonだけじゃ
速度が問題になるし、Cと併用するなんて面倒なだけだ。

逆にPythonの方がC++より効率が良いのは、コンパイルがいらない他に何がある?

> Pythonは汎用言語で、大規模アプリケーション開発にも適しています。
> ↑これに反論はない?

ある。前述の通り。

>>968
> 大規模なプログラミングをするのにC++よりPythonの方が良いなあって
> 人がいたらダメなの?

PyQtじゃDelphi使いの要求には応えられないって話から始ってるんだが。
973デフォルトの名無しさん:2010/04/03(土) 13:56:33
>>971
>>949>>938>>939のやり取りに対応してる。

でさぁ、結局>>961はいったいドンだけの経験を持って言ってるのさ。答えてない。
974デフォルトの名無しさん:2010/04/03(土) 13:58:05
>>972
>自分でやってみて書いてる?そもそもC++が使えなくてCだけだってところで×なんだが。
あぁ、もちろん。
DLLの呼び出しはCだけだけど、拡張モジュールはC++だって使えるぞ。
というか、 PyQt ってそもそも Python の拡張モジュールで C++ の Qt を使っているんだぞ。
個人的には、 PyQt が使っている sip じゃなくて Cython を使う方が好きだけどな。

>Cと併用するなんて面倒なだけだ。
単に拡張モジュール作った経験が無いだけじゃないの?

>逆にPythonの方がC++より効率が良いのは、コンパイルがいらない他に何がある?
例外が使いやすい。何もしなくてもバックトレースが取れる。
参照カウンタ方式のGCが標準でつく。shared_ptrを返すか、参照を受け取るかを悩む必要がない。
コンテナに値を入れるときに、そのまま値を入れてコピーコストや例外安全を気にしたり、
どのスマートポインタを使うかを気にする必要がない。
動的言語だからインタラクティブシェルで動かしながら開発・デバッグができる。
標準ライブラリが豊富。

>PyQtじゃDelphi使いの要求には応えられないって話から始ってるんだが。
だれがそんな事言った?おまえが勝手に言っているだけで、そんな話題は最初から無かったんじゃない?
975デフォルトの名無しさん:2010/04/03(土) 14:03:36
>>972
日本語で桶
976デフォルトの名無しさん:2010/04/03(土) 14:08:12
>>973
Python, C/C++ 両方でいろんなアプリケーションやライブラリ作ってるよ。
QtCreatorもPyQtも使ってるが、GUIの比率は少ないな。

おまえこそ、どれだけPythonの経験があってPythonはスクリプトにしか向かないって言ってる?
拡張モジュールの知識があんまりないってことは初心者だよな?
実際にPythonでたくさんのアプリケーションが作られていることも知らないんじゃない?
977デフォルトの名無しさん:2010/04/03(土) 14:08:46
>>974

>> PyQtじゃDelphi使いの要求には応えられないって話から始ってるんだが。
> だれがそんな事言った?おまえが勝手に言っているだけで、そんな話題は最初から無かったんじゃない?
>>905>>936>>938>>939>>940

実際、Delphi使っちゃうと、開発環境はQt Creatorレベルじゃないと耐えられないと思う。
そうするとC++で書くことになるけど、コンパイル速度はプリコンパイルヘッダーやjomで
補うってことで良いんじゃないの?

もちろんPyQtでDelphiなみのRAD環境が構築できるのならおkだと思うけど。
978デフォルトの名無しさん:2010/04/03(土) 16:03:00
>PyQtじゃDelphi使いの要求には応えられないって話から始ってるんだが。
どこから始まっていようが、流れ着いた話が
「大規模なプログラミングをするのにPythonは向いていないとお前も思え」
じゃあ変態さんだよ。
979デフォルトの名無しさん:2010/04/03(土) 16:39:32
>>978
「お前も思え」なんて、直接じゃなくて意味上からもどこにも書いてない。
逆に C++ だけより Python の方が良いと思えと言われてるように感じるが。
980デフォルトの名無しさん:2010/04/03(土) 17:00:14
>意味上からもどこにも書いてない。
書きまくってるじゃん。

>Python の方が良いと思えと言われてるように感じるが。
確かにそう言ってる変態さんもいるね。

大規模なプログラムにPythonが適していると思うのも、適していないと思うのも
所詮は「自分にとってはそういうものだ」に過ぎないのにね。
981デフォルトの名無しさん:2010/04/03(土) 17:37:04
開発環境をしていたところで、いきなりPythonをスクリプティング用途にしか使えない >>949
Pythonは本格的な大物アプリには向かないなんて的外れな主張をし出しただけ。
言語論争は他のスレでやれ。
982デフォルトの名無しさん:2010/04/03(土) 17:55:46
>>980
そんなことを言い出したら、自分の意見を主張することは一切出来なくなってしまう。

>>981
もう一度 >>949 をよく読んで。スクリプティング用途にしか使えないなんて書いてないし、
「画像処理やハードウェア制御を伴うような」と前置きもしてある。Pythonが好きだとも書いている。
これは言語論争じゃない。DelphiからQtへの移行を考えてる人に何を勧めるかの話だ。
983デフォルトの名無しさん:2010/04/03(土) 17:59:44
>>976
> Python, C/C++ 両方でいろんなアプリケーションやライブラリ作ってるよ。
> QtCreatorもPyQtも使ってるが、GUIの比率は少ないな。

それでわかった。GUIの比率が少なければそう思うかもね。

> おまえこそ、どれだけPythonの経験があってPythonはスクリプトにしか向かないって言ってる?
> 拡張モジュールの知識があんまりないってことは初心者だよな?

その通りだよ。
拡張モジュールにC++が使えるのはわかったけど、クラスDLLはコンパイラによって互換性がない。
VCとMinGW gccじゃインターフェースが異なる。この辺はどうやって吸収できるの?

> 実際にPythonでたくさんのアプリケーションが作られていることも知らないんじゃない?

さすがにこれは知ってるが。
984デフォルトの名無しさん:2010/04/03(土) 18:08:08
早い話、この中にDelphiやC++ Builderを使ったことがある人がどれだけいる?

使ったことがあれば、最低でもQt Creator並のRAD環境が必要なのはわかるはず。
DelphiやC++ Builderはもっと便利だ。例えばFileを開くダイアログやポップアップメニュー
はQt Creatorではポトペタできないので、手書きコードで書くしかないが、
DelphiやC++ Builderではその場に表示されない擬似的なGUI部品としてポトペタ
してプロパティの設定とかが可能。

しかもDelphiなら、高速な処理が必要な部分も他の言語で書いたモジュール等に
頼ることなく記述できるし、当然本体と一緒にデバッグもできる。

それなのに「コンパイル速度」という理由だけでPyQtを勧めるのはいかがなものか
と思う。高速処理が必要な部分は他の言語で書いたモジュールに頼らざるを得ない
という弱点もある。

勧めるのなら、最低でもDelphi並みのRAD環境の構築方法も書くべきだ(存在するの
ならだけど)。
985デフォルトの名無しさん:2010/04/03(土) 18:31:53
>もう一度 >>949 をよく読んで。スクリプティング用途にしか使えないなんて書いてないし、
Pythonについて、
・所詮はスクリプト言語
・仕事をササっとやるとか
・小物ソフトを作るのに向いてる
なんて言ってるわけですが、これってあなたの主観に過ぎんのだわ。
大物にだって向いているよと考える人がいても良いわけだし、一般論みたいに
言うのはよろしくないですな。
あなたが「Pythonは大物には向いていない」と考えるのは自由ですが、
他人が「Pythonは大物には向いている」と考えることを否定する必要は何もありません。

Delphiからの乗り換えを踏まえるとしても、Delphiってのはポトペタだけが魅力なんですか?
「言語記述が好きだ」「C++は大嫌いだから」という人は想定外ですか?
それにQtもCreatorがなければダメってことはありませんよ。

ところで「Pythonが好きだとも」は何かの弁解になるんですか?
986デフォルトの名無しさん:2010/04/03(土) 18:36:23
普通に考えて、GUI部分と、アプリケーションロジックと、画像処理みたいなルーチンは分離して設計するだろ?
画像処理のコードを修正したときに、GUIから操作しないとテストできないみたいなバカな設計はしないよな?
分離して設計するなら、一つの言語で書く必要がどこにある?

C++ってのは、ヘッダファイルとソースファイルに分割して書かないといけなかったり、
オブジェクトを値のままコンテナに突っ込んだらスライシングやコピーコストやコピーコンストラクタの
例外安全性を気にしないといけなかったり、だからってshared_ptr<>をコンテナに突っ込むと
演算子オーバーロードがオジャンになるからアルゴリズムを使うために述語関数を用意しないと
いけなくなったり、それを避けるために pImpl を使ったら継承が面倒になったりと、
アプリケーションのロジックを書くのに、C++ならではの余計な事を大量に考えながらコードを書かないと
いけない言語だ。

Pythonの方がアプリケーションのロジックに集中して書けるし、あとから他の人が読んでも理解するのが速い。
RADで解決できるのなんてほんの表面の部分だけ。
あと、9割以上のアプリケーションでは、自分で拡張モジュールを書かなくても既存のライブラリで問題を解決できる。
987デフォルトの名無しさん:2010/04/03(土) 18:40:38
C++だけで世の中がまわるとQt周辺が考えてるなら他言語とのインターフェースは存在せんだろう。
自分が受容できないからといってC++Builderを引き合いにしてキレるのはいかがなものか。
988デフォルトの名無しさん:2010/04/03(土) 18:45:22
>社内ライブラリなんかクラスDLLにすることが多いから無理。
この人、LinuxとかMacでもこんなことするんか。
Windows専用だったらC++ Builder使ってればいいのに。
989デフォルトの名無しさん:2010/04/03(土) 19:08:34
>>985
> Delphiからの乗り換えを踏まえるとしても、Delphiってのはポトペタだけが魅力なんですか?

ほとんどそうだと思うよ。言語的には潰しが利かない(他にごく一部の例外を除いて開発環境が
ない)から、Delphiを選択する一番の理由は優れたRAD環境にあると思う。

> それにQtもCreatorがなければダメってことはありませんよ。

あの便利さを知ってしまったらDelphi使いがQt CreatorなしでQtを受け入れるのは困難
なことだろうね。

使ってみなければ理解できないと思うよ。
990デフォルトの名無しさん:2010/04/03(土) 19:13:02
>>986

> 普通に考えて、GUI部分と、アプリケーションロジックと、画像処理みたいなルーチンは分離して設計するだろ?
> 画像処理のコードを修正したときに、GUIから操作しないとテストできないみたいなバカな設計はしないよな?
> 分離して設計するなら、一つの言語で書く必要がどこにある?

組み合わせてみて初めてわかるバグとか問題点がよくあるのはわかるよね?
それとロジック部や個別機能のルーチンのテストも、Delphiだったらテストプログラムを
ササっと(ショボイGUIで構わないから)書けるから、一つの言語ですべてを完結させられる。
991デフォルトの名無しさん:2010/04/03(土) 19:20:00
>>988
> Windows専用だったらC++ Builder使ってればいいのに。

Delphi/C++Builderは最近品質低下が激しいし、開発元が部門の分離やら買収やらで
弱体化してるから、他へ逃げようとしてる人は多いと思う。俺もその一人。>>905もそうだと
思う。
992デフォルトの名無しさん:2010/04/03(土) 19:21:55
補足。だからここ↓ではQtの話がよく出てくる。
ttp://pc12.2ch.net/test/read.cgi/tech/1269010332/l50
993デフォルトの名無しさん:2010/04/03(土) 19:33:49
で、>>974 が言っているようなPythonの利点と、 >>986 が言っているようなC++の欠点は、
RADの完成度に比べたらアプリケーションの生産性に大した影響がないの?
994デフォルトの名無しさん:2010/04/03(土) 19:38:13
Delphi脳になるとRADが絶対化して完成度のRADが無い環境がイヤになる。

Python脳になるとコード書き換え、コンパイル、再実行なしにプログラムを実行したまま
テスト、デバッグ、書き換えができない環境がイヤになる。

C++脳になると、ヘッダファイルを書いたりテンプレートを書いたりする作業が
アプリケーション構築には本来不要な余計な作業だという認識が無くなる。
995デフォルトの名無しさん:2010/04/03(土) 19:47:28
元カノはこんなことやあんなことをしてくれた。
あれを経験したらキミがしてくれることには満足できないね、ですか。
やれやれ。

>>989みたいな
「Delphi/Builderではできたからxxでもこうできなくてはならない」
なんて価値観の押しつけってバカ丸出しだと思う。しかもエンバカ難民。
国を捨てて流れ着いた難民が、「元の国ではこんなサービスがあったんだから
この国でも我々は同じサービスを受ける権利がある」なんて主張したらどう思う?
帰れよ元の国に、って思うんじゃない?

エンバカ難民の傾向ってこういうのなのかなあ。
要は「RADでない開発環境は使えねえ。他人にも薦められないし他人に薦める奴も許せねえ」って感じ?
これがあっての上での>>949なのかなあ。だとしたらすごく分かりやすい。

俺、Delphiは昔使ってたよ。あれはあれ、これはこれだろ。
996デフォルトの名無しさん:2010/04/03(土) 20:05:16
Qtの開発元のNokiaは、PyQtがあるのに、GPLだからという理由だけでわざわざ
PySideの開発に乗り出した。
それくらい、Qtの開発元にとってもPythonは重要な言語。
997デフォルトの名無しさん:2010/04/03(土) 20:46:37
u
998デフォルトの名無しさん:2010/04/03(土) 20:48:16
m
999デフォルトの名無しさん:2010/04/03(土) 20:49:22
e
1000デフォルトの名無しさん:2010/04/03(土) 20:50:04
.
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。