トップページ⇒tech
1001コメント339KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2010/01/29(金) 15:09:46
Qt(キュート)は C++ ベースのフレームワーク&RAD開発環境です。

ライブラリの機能は、フォーム、ボタンなどの各種ウィジェットからネットワーク、マルチスレッド、
グラフィックス(OpenGL)や各種コンテナ、XMLパーサー、組み込み JavaScript など、非常に多岐に渡ります。

公式の統合開発環境「Qt Creator IDE」を使えば、クロスプラットフォーム対応のRAD開発が可能です。
また、EclipseやVisual Studio上で開発したい人のためのアドインも用意されています。

■主な対応プラットフォーム(デスクトップ用途の場合)

Windows XP, Vista, 7
Mac OS X 10.4, 10.5, 10.6
Linux

■ライセンス

・オープンソース版(Open-source version)
 LGPL 2.1 または GPL 3.0 のうちどちらかを利用者が選べます。
 LGPL を選んだ場合は商用利用が可能です(いくつか制限あり)。

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

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

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

■前スレ

【RAD統合環境】 Qt 総合スレ 5 【Win/Mac/Linux】
http://pc12.2ch.net/test/read.cgi/tech/1254366507/
0002デフォルトの名無しさん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は動的リンク時

実際には他にも条件(リバースエンジニアリング関係とか)あるので、
きちんとライセンスの条文を読むこと。
0003デフォルトの名無しさん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 を使用する」のチェックを外してみる
0004デフォルトの名無しさん2010/01/29(金) 15:16:28
これもテンプレなのかな

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

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

>>6

すいません、今日なんとか自己解決しました
0009デフォルトの名無しさん2010/01/29(金) 20:43:23
>>5
コピー可能なデータを渡すようにするのが安全です。
QStringやQPixmapなどはimplicit sharedなので、データ部分は共有して、
intやdoubleと同じ感覚で引渡せるので効率的かつ安全です。
0010デフォルトの名無しさん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らしいのでこれを使う事にしてみます

皆さんありがとうございました
0011デフォルトの名無しさん2010/01/31(日) 14:08:04
qt4のドキュメント探していると、qt3のドキュメントが沢山出てくるわけですが
qt3のドキュメントはどこまで信用していいのですかね?
つまり、qt4でプログラミングをする時に、qt3のドキュメントをどこまで参照していいのか?と
0012デフォルトの名無しさん2010/01/31(日) 14:28:22
>>1
>LGPL 2.1 または GPL 3.0 のうちどちらかを利用者が選べます。
> LGPL を選んだ場合は商用利用が可能です(いくつか制限あり)。

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

はLGPLの誤りだよね。

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

違うよ。
0015デフォルトの名無しさん2010/01/31(日) 15:20:29
>>13
> 別にウソ書いてるわけじゃないからいいんじゃないの?
いやウソ書いてるよ。
0016デフォルトの名無しさん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で最初からプロ
グラムを書くならば、まったく使う必要がないからです。
0017デフォルトの名無しさん2010/01/31(日) 15:23:15
>>13はGPLを知らなかったのか。。。
0018デフォルトの名無しさん2010/01/31(日) 15:25:05
>>16
わかりました
親切な解説ありがとうございます
0019デフォルトの名無しさん2010/01/31(日) 15:37:09
>>13
>で、どう誤解を生むの?

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

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

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

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

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

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

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

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

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

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

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

java - swt, java - swing 系行くかのほうが
ぜったい楽だと思うの
0055デフォルトの名無しさん2010/02/03(水) 21:51:33
http://www.harukaze.net/~haruka/wxpython/index.html

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

C#に関してkwsk
0057デフォルトの名無しさん2010/02/03(水) 22:45:40
ggr C# Qt Bindings
0058デフォルトの名無しさん2010/02/03(水) 23:36:02
>>57
ろくな日本語ソースがひっかからない(´・ω・`)
0059デフォルトの名無しさん2010/02/04(木) 00:06:22
>>58
それはイバラの道だからではw
0060デフォルトの名無しさん2010/02/04(木) 01:44:48
カレンダーコントロールというか
DatePicker みたいなもので
標準的なものはありますか?
0061デフォルトの名無しさん2010/02/04(木) 01:48:09
QCalendarWidget
0062デフォルトの名無しさん2010/02/04(木) 06:38:56
>>58
英語のソースでよいというのが大勢になって来たからではないか。
0063デフォルトの名無しさん2010/02/04(木) 11:11:27
サンプルソースだけで何とかなるからなぁ
0064デフォルトの名無しさん2010/02/04(木) 15:31:35
Qtで3Dバリバリのネットゲーを作れますか?
Windows向けにDirectXでやるか、マックやLinuxユーザーでも遊べるような環境を使うかで悩んでるんですが。

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

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

みたいな理解でok?
0065デフォルトの名無しさん2010/02/04(木) 15:43:59
ok
作れます

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

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

0085デフォルトの名無しさん2010/02/05(金) 18:59:05
あんまりかわらん
0086デフォルトの名無しさん2010/02/05(金) 20:54:55
>>82
-QuickTime -twitter
検索ではいつも2つ除外してます
0087デフォルトの名無しさん2010/02/06(土) 00:38:38
Qt Creatorって使い方覚えれば結構勝手が良さそうだな
ぼちぼちメニューも日本語化がすすんできたみたいだし
0088デフォルトの名無しさん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\"\"\"にしてもやはり「\"」が渡されてしまいます。

「\"」への変換なく「"」のまま渡すにはどうすればいいのでしょうか。
0089デフォルトの名無しさん2010/02/06(土) 06:35:16
だれが\を付けてるのかをはっきりさせた方が良い
0090デフォルトの名無しさん2010/02/06(土) 07:41:20
>>87
うん。慣れてくると結構いいよ。今までC++ Builder使ってたけど、「遜色ない」と
までは行かないものの、そんなに不満はない。

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

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

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

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

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

corelib\io\qprocess_win.cppの問題だと思うなこれ
0093デフォルトの名無しさん2010/02/06(土) 19:38:36
CarbideでQt使ってる人いますか?
CreatorみたいQtのリファレンスを見たいんですが(F1とかで)
できないんでしょうか?
0094デフォルトの名無しさん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 で保存しています
0095デフォルトの名無しさん2010/02/06(土) 20:04:31
qPrintable( const QString & str )
0096デフォルトの名無しさん2010/02/06(土) 20:10:40
wxスレで質問してたひとかな?
0097デフォルトの名無しさん2010/02/06(土) 20:23:12
>>95
ありがとうございました

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

探すより iterator 回して実装した方が早いような気もしますが
もし既に便利なものあるなら使いたいです
0098デフォルトの名無しさん2010/02/06(土) 20:25:07
お好きにどうぞ
0099デフォルトの名無しさん2010/02/06(土) 20:26:17
>>97
> 探すより iterator 回して実装した方が早いような気もしますが
天才ですか!?
探すより早いなら実装しろよ

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

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

QtはC++の機能を最大限に使いつつ、C++の面倒なところをユーザに押し付けないライブラリだと思ってる。
0127デフォルトの名無しさん2010/02/08(月) 00:25:57
ってことはあれじゃね、GUIアプリを組むとき以外もQtって使えるってことじゃね?
0128デフォルトの名無しさん2010/02/08(月) 00:34:51
うんそうだよ
それに気付いてからBoost捨てた
0129デフォルトの名無しさん2010/02/08(月) 03:19:56
暗黙の共有というしくみがあるのは分かったのですが
QString str1 = "hoge";
QString str2 = str1;
のあと
str2[1] = 'a';
を実行すると Copy on Write が発動して
str2 が "hage" になっても str1 は "hoge" のままというのとは逆に
あえて
str1 が "hage"
になって欲しいときはどうすれば良いのでしょうか?
0130デフォルトの名無しさん2010/02/08(月) 04:39:51
参照にすればいいんじゃね?
0131デフォルトの名無しさん2010/02/08(月) 06:05:20
>>94
QApplication app(argc, argv);
のあとに
QTextCodec::setCodecForCStrings(QTextCode::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
を書き足す
0132デフォルトの名無しさん2010/02/08(月) 11:43:00
>>127
qdbusはQt使ったコンソールアプリだな。
コンソールアプリケーション作るときはQApplicationじゃなくQCoreApplication使うらしい。
0133デフォルトの名無しさん2010/02/08(月) 16:19:00
>>131
訂正
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
0134デフォルトの名無しさん2010/02/08(月) 16:47:14
>>130
やってみます
ありがとうございました!!
0135デフォルトの名無しさん2010/02/08(月) 20:40:51
std::coutに相当する機能を教えてください
0136デフォルトの名無しさん2010/02/08(月) 20:49:28
stdout 用に作られているインスタンスはないので下記のようにして作る。
QTextStream cout(stdout, QIODevice::WriteOnly);
01371352010/02/08(月) 20:52:19
>>136
ありがとうございます
0138デフォルトの名無しさん2010/02/08(月) 20:54:30
qDebug()を使ってみたのですが何も出力されません
なにかあらかじめ設定しないといけないモードとかあるのでしょうか?
0139デフォルトの名無しさん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
}
}
0140デフォルトの名無しさん2010/02/08(月) 21:22:42
>>139
できました
ありがとうございます

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

つ〜かそれだったらさ、C++のプログラム組むのにわざわざ金出してVS買うよりも
フリーのQt Creatorを使った方がよくね?
0152デフォルトの名無しさん2010/02/09(火) 04:19:32
>>146
このスレでも前スレのテンプレまではqDebugで日本語ムリってなってたぞ
0153デフォルトの名無しさん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 ってことだぬ
0154デフォルトの名無しさん2010/02/09(火) 06:00:36
>>151
動けばいいってんならその考え方でOK
0155デフォルトの名無しさん2010/02/09(火) 06:10:45
>>147
Qt Creatorの補完機能は結構優れものだと思う。
0156デフォルトの名無しさん2010/02/09(火) 06:50:02
Visual C++の奴よりもよくできてるよな。
補完が動かなかったらコードミスを疑うようになるレベル
0157デフォルトの名無しさん2010/02/09(火) 09:23:04
>>155
eclipse版も同レベル?
01581552010/02/09(火) 11:05:18
使ってないからわからない。使ってる人ヨロシク。
0159デフォルトの名無しさん2010/02/09(火) 11:24:48
>>157
eclipse で使う場合は eclipse が元々持っている補完機能を使うことになる。
SIGNAL や SLOT マクロの中を補完できないので Qt で書く場合には
個人的には Creator の方が楽。
0160デフォルトの名無しさん2010/02/09(火) 20:28:59
Qtと関係なくC++を勉強する人にもQt Creatorは実はおぬぬめじゃね?
0161デフォルトの名無しさん2010/02/09(火) 20:41:36
まじか。
Qt Creatorすげぇ。
0162デフォルトの名無しさん2010/02/09(火) 23:40:44
QtCreator上のデバッグって
なんかウインドウ上部に大きさ変えられないデバッガ出力があるんだが
下にもコンソールあるし邪魔くさくね?
あれ消せないんだろか
0163デフォルトの名無しさん2010/02/10(水) 00:51:30
>>160
そうかい?
基本的なC++から勉強したいからCDTでやってるが
いきなりマクロだらけのOtからだとキツイw
0164デフォルトの名無しさん2010/02/10(水) 00:59:49
Qtはどんどん新機能が付いて更新が楽しいわ
0165デフォルトの名無しさん2010/02/10(水) 01:09:05
これはすごいと思った
0166デフォルトの名無しさん2010/02/10(水) 01:09:45
↓
YouTube - Qt Widgets enter the third dimension: WolfenQt
http://www.youtube.com/watch?v=MXS3xKV-UM0
0167デフォルトの名無しさん2010/02/10(水) 01:16:51
>>163
キツくないよ
楽だろ
そりゃマクロのせいで元々のC/C++の機能かQtの機能かの区別がわからないひとは
あとで知識の再整理が必要になるだけで
今後もQtしか使わないかもしれない訳で困ることじゃない
0168デフォルトの名無しさん2010/02/10(水) 01:19:12
>>165-166
すまんが使い道が思い浮かばん
0169デフォルトの名無しさん2010/02/10(水) 01:31:14
>>166
それかw
すごいとは思うがゲーム以外の何で役に立つのか分からん。
0170デフォルトの名無しさん2010/02/10(水) 01:42:47
単純に技術としてすごいと思った
0171デフォルトの名無しさん2010/02/10(水) 02:00:28
そろそろカウボーイビバップみたいなネットブラウズさせてくれ
0172デフォルトの名無しさん2010/02/10(水) 16:14:57
>>166
すげぇ

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

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

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

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

京都?
0188デフォルトの名無しさん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 でないと動かない
0189デフォルトの名無しさん2010/02/11(木) 10:09:42
Ubuntu9.10で、Creator1.2.1使ってますが
同時にGEditeなど他のエディタを開いてコピペにて、Creatorに戻って
別のコピペをしても、前のコピーが残ったままでCreatorを一度終了するまで
正常にならナインだけど、
1.3.1では改善されてる?
誰かしらない?
0190デフォルトの名無しさん2010/02/11(木) 10:26:14
>>185
いや同じにもできるし、プラットフォームに合せて変えることもできるということ
0191デフォルトの名無しさん2010/02/11(木) 10:26:41
>>185
いやならバイナリで作るでしょ
コンソールに出力したときだってプラットフォームによってエンコード変わっちゃうんだし
0192デフォルトの名無しさん2010/02/11(木) 10:47:29
>>186
やっぱC#はエレガントでいいなw
0193デフォルトの名無しさん2010/02/11(木) 12:09:55
むしろQtを使った場合 C++ と C# の違いがほとんど感じられない気がする
0194デフォルトの名無しさん2010/02/11(木) 12:34:59
C#なら.netのクラスを使える。これは非常に大きな違い。
あとWindowsじゃないとまともに動かない所とか。
Monoってどこまで.Netに追いついてたっけ?
0195デフォルトの名無しさん2010/02/11(木) 12:38:48
クロスプラットフォームのフレームワークを
わざわざMS固有の言語で使うなんて馬鹿
0196デフォルトの名無しさん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に入れてもいいかもしれない
0197デフォルトの名無しさん2010/02/11(木) 13:25:31
ネイティブコードを吐かせてこそ意味がある
0198デフォルトの名無しさん2010/02/11(木) 15:55:43
iPhone向けMonoがネイティブを吐くんだよな
ただ、MacOS必要なのとツールが優良なのがネック
0199デフォルトの名無しさん2010/02/11(木) 17:07:06
WMターゲットで開発するときって結局VS付属のWM用コンパイラが必要なんだよね?
0200デフォルトの名無しさん2010/02/11(木) 18:32:45
CeGCC が使える
Qt for Windows CE がCeGCCでコンパイルできるかは知らないが
0201デフォルトの名無しさん2010/02/11(木) 21:06:25
>>196
REPL目当てならipython+PyQtって手もある
Pythonxyが全部まとめて入ってておすすめ
0202デフォルトの名無しさん2010/02/11(木) 21:09:48
C++で分割ソースをコンパイルするときは、まず各.cppファイルをコンパイルしてオブジェクトファイルを生成し、
できたオブジェクトファイルを最後にリンケージするという手順が必要なわけだけど、それをQtを使って
プログラミングするとなるとその手順はどうなるの?
0203デフォルトの名無しさん2010/02/11(木) 21:11:39
qmakeがMakefileを自動生成するから
そこら辺はあまり気にしなくていい
0204デフォルトの名無しさん2010/02/11(木) 21:15:44
はじめてQtを入れて触り始めています。
Qt creatorの完成度が高くて驚きました。
ただビルドに時間がすごく掛かるんですが何か間違っているんでしょうか?
hello worldだけでビルドに数十秒もかかっています。
使っているのはWindowsのmingw32版です。
0205デフォルトの名無しさん2010/02/11(木) 21:35:25
>>202
同じ
というか Qt だと moc とか uic とかの手順も増える
しかし >>203 の言うとおりだから気にすんな
0206デフォルトの名無しさん2010/02/11(木) 21:36:46
>>204
PC のスペックくらい書け
0207デフォルトの名無しさん2010/02/11(木) 22:00:27
>>202
$ qmake -project
$ qmake
$ make
終わり
0208デフォルトの名無しさん2010/02/11(木) 22:03:39
まぁしかし
なんでもおまかせでうまくいくのは最初のうちだけなんだよな
0209デフォルトの名無しさん2010/02/11(木) 22:17:42
>>206
ごめんなさい。Core 2 Duo P8800 + Windows 7です。
0210デフォルトの名無しさん2010/02/11(木) 22:33:12
Qtの初回ビルドは時間かかるね
普段のビルド(ソースファイル2〜3個修正したとか、UIだけいじったとか)ならすぐ終わるんじゃない?
0211デフォルトの名無しさん2010/02/11(木) 22:33:44
ちょっとお聞きしたいのですが
qtやるならc++から勉強したほうがよいですか?
それともqtプログラミングの本かって触りながらやってもいける感じでしょうか
fortran畑なのですがguiプログラミングやる必要がでてきていろいろ探しているのですが
すいませんがよろしくお願いします
0212デフォルトの名無しさん2010/02/11(木) 22:34:11
書いてるコードの種類にも寄るような気はするが
xtal をコンパイルboost呼び出しお茶を飲むような系統なら
時間はかかっても不思議でないし・・・
0213デフォルトの名無しさん2010/02/11(木) 22:37:23
>hello worldだけでビルドに数十秒もかかっています。

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

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

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

実行速度とか余り関係なくて簡単に余り凝ってないGUIプログラムを作ってみる
のなら、Python+EasyGuiあたりから始めてみたら?
0218デフォルトの名無しさん2010/02/11(木) 22:56:26
一年ぶりにうpでーとしたら、QPainterあたりの実装が変わって
気軽にドット打てなくなってたorz
drawPoint()では1x1サイズのドットしか描けね。泣けた。
代わりにfillRect()使うことにしたがマンドクセ('A`)
0219デフォルトの名無しさん2010/02/11(木) 23:00:09
いや、チュートリアルだけでも結構行ける
とりあえずやってみれば?
言語でわかんないところが出てきたら
その都度ググればいいだけのこと
0220デフォルトの名無しさん2010/02/11(木) 23:09:49
>>209
プリコンパイルド・ヘッダー使ってみたら?

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

VCでnmakeじゃないと使えない風に読めるけど、実際にはjomでも大丈夫だし、
コンパイラをMinGW gccにしてmingw32-makeでも大丈夫だったよ。
0221デフォルトの名無しさん2010/02/11(木) 23:12:17
>>219
甘いんじゃない?
ググってばかりでなかなか先に進まず、そのうちイヤになってくる可能性大。
0222デフォルトの名無しさん2010/02/11(木) 23:19:27
QStringとかは重要なクラスなので、暗黙的に#includeしてくれるっぽいですね
他にどんなクラスが、暗黙的な#includeをされているんですか?
0223デフォルトの名無しさん2010/02/11(木) 23:26:00
QtCoreのなかのモジュール。QStringもそう。
0224デフォルトの名無しさん2010/02/11(木) 23:29:51
>>214,215,217
ありがとうございます。とりあえずインストールして触ってみます
土日に紹介していただいた本も立ち読みしてみます
c++ってメジャーっぽいので覚えておいて損もなさそうなので、
これを機会に勉強してみようとも思います
ありがとうございました
0225デフォルトの名無しさん2010/02/11(木) 23:32:26
>>211
http://www.harukaze.net/~haruka/wxpython/index.html

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

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

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

みたいのほうがメンテは楽だと思うぞ
適材適所使い分けりゃいいのよ… C++ +α
0228デフォルトの名無しさん2010/02/11(木) 23:40:50
>>216
proファイルはあとから手書きで書き換えるから
qmake -project と qmake がくっついてると困るわ
02292222010/02/11(木) 23:48:23
>>223
Qt creatorでプロジェクトを作る時に、どれをインポートするかって質問されるじゃん
あれでチェックすると暗黙的に#includeしてくれるの
それとも、Qt Coreだけなの?
0230デフォルトの名無しさん2010/02/12(金) 00:00:16
もちろんカリカリに組んだらC++よりCが速くなる可能性はあるが
メモリ潤沢という前提ならC++の方が速いものができることが多いな
0231デフォルトの名無しさん2010/02/12(金) 00:02:21
>>C++よりCが速くなる
例えばどんなコードで?
0232デフォルトの名無しさん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++で組まれることは多いやね・・・過去の資産もあるし
0233デフォルトの名無しさん2010/02/12(金) 00:29:16
>>232
>pythonにしたおかげでOpenGL部分はわりとさくさくだが、SJISとUTF-8の混在が面倒くさいことに。
慣れてないとこうなる例
0234デフォルトの名無しさん2010/02/12(金) 00:30:19
>>216
俺は別ファイルに追記する分を書いて、シェルスクリプトでproファイルとくっつけてmakeまでやらせてる。
0235デフォルトの名無しさん2010/02/12(金) 00:31:45
>>232
http://www.nicovideo.jp/watch/sm9127380
0236デフォルトの名無しさん2010/02/12(金) 00:43:29
>>235
>使用言語:C++(DXライブラリ)

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


ってドエライ人が言ってた
0243デフォルトの名無しさん2010/02/12(金) 01:54:43
>>237
ある処理を、C++の機能を使って「エレガントに」実装した時の実行速度と、
Cでカリカリ実装した時の実行速度の、一般的な違いのことだと思うよ。
同じように書いたものには勿論そんな違いは無いし、一つ一つ見ていけばqsortとsortみたいな
逆になりうる例もあるし、とりあえずそんな厳密な優劣の話ってわけではない、はず。
0244デフォルトの名無しさん2010/02/12(金) 02:12:44
>>220
ありがとうございます。
プリコンパイルヘッダー、gccでも使えるんですね。
あとで試してみます。
0245デフォルトの名無しさん2010/02/12(金) 02:20:03
vcのコンパイラだと何も設定しなくても速いな
0246デフォルトの名無しさん2010/02/12(金) 03:33:24
Qt Creatorの拡張がしたいけど
どうやればいいんだろう?
0247デフォルトの名無しさん2010/02/12(金) 03:47:36
「入門Qt4プログラミング」に書いてある
0248デフォルトの名無しさん2010/02/12(金) 06:38:55
       ∧∧   コイヤァァァァ!!
       (д´* )
       (⊃⌒*⌒⊂)
        /__ノωヽ__)
0249デフォルトの名無しさん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 /     
             `ー= `ー='        (⌒ (⌒  )ノ   )
0250デフォルトの名無しさん2010/02/12(金) 16:01:14
Qtで作成したソフトにヘルプ機能を持たせようとしてるんですが,ToolTipやWhatsThisでは機能不足
だし,かと言ってQtの本格的なヘルプシステムでやろうとするとQt Assistantをカスタマイズしたり
起動させたりしなければならず大袈裟なので,HTMLでヘルプを作っておいて,ブラウザに表示させる
ことを考えています。

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

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

よろしくお願いします。
0251デフォルトの名無しさん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だけの調整で他のプラットフォームでも使える。
02522502010/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の作成ですね。

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

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

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

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

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

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

QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
にして環境非依存にしておく方がスマートだと思う
0273デフォルトの名無しさん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) の方が望ましいと解釈してるんだけどどう?
0274デフォルトの名無しさん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) が使用されている?

かな
0275デフォルトの名無しさん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
0276デフォルトの名無しさん2010/02/13(土) 11:02:00
>>274

>>176

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

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

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

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

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

あんまりほめられたことじゃないけど、カットアンドトライ的にソースをホイホイ
書き換えてはデバッガーで動かしてテストしてみるのはちょっと苦痛。
0293デフォルトの名無しさん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 は書いてなくても動くみたいです
ありがとうございました
0294デフォルトの名無しさん2010/02/13(土) 21:54:49
>>282

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

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

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

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

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

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

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

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

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

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

ありがとう
03383232010/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++では、インスタンスのメンバ関数のアドレスを、メンバ関数へのポインタを作るために取得することは禁じらています。
結局、この方法はペケなんですかね

0339デフォルトの名無しさん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 を呼ぶ必要があるけど。
0340デフォルトの名無しさん2010/02/17(水) 00:50:34
>ダイアログ1のデータをダイアログ2で使いたいんですが、うまく行きません。
シグナルるでスロットにデータを渡す
0341デフォルトの名無しさん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するのマンドクセ
0342デフォルトの名無しさん2010/02/17(水) 13:50:31
makeしなくてもmsysとQtで別々にMinGWがある状態でやってればいいんじゃ?
共存できないのかな
0343デフォルトの名無しさん2010/02/17(水) 14:14:46
できる
0344デフォルトの名無しさん2010/02/17(水) 15:20:08
qt4.6.2はバグフィックス集みたいだから
余計な苦労したくなければ入れておく方がよさげだね
0345デフォルトの名無しさん2010/02/18(木) 00:21:55
QtCreatorってVCみたいなドッキングウィンドウにならないのかなぁ・・・
0346デフォルトの名無しさん2010/02/18(木) 00:22:52
なるよ
0347デフォルトの名無しさん2010/02/18(木) 20:22:21
qtってSIGNALとSLOTがあるから例外を投げてこないのかな〜
0348デフォルトの名無しさん2010/02/18(木) 21:18:41
とあるソフトではQApplicationを継承したクラスに、
public + staticなメンバ変数を宣言していました

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

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

0365デフォルトの名無しさん2010/02/20(土) 02:45:31
>>364
10.6 で qt4-mac @4.6.2 の qtdemo-mac (コマンドライン) と
/Applications/MacPorts/Qt/qtdemo.app を起動してみたけど,どっちも問題ないです.
ビルドはデフォルトのまま 64bit でしてるけど, MacBook なのでカーネルは32bit.
0366デフォルトの名無しさん2010/02/20(土) 09:47:44
>>359
QNetwork を見ると QHttp とほとんど同じメソッドっぽいんですが
QNetwork の方が高機能で QHttp は obsolete ってことですか?
0367デフォルトの名無しさん2010/02/20(土) 11:47:45
>>366
そうです。
http://doc.trolltech.com/4.6/obsoleteclasses.html
0368デフォルトの名無しさん2010/02/20(土) 14:25:13
FreeBSDにパッケージからQt4をインストールしたんだけど

> qmake -project

まではおkだけど、次の

> qmake

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

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

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

いずれにせよちょっとお行儀悪すぎないか?
0381デフォルトの名無しさん2010/02/20(土) 19:43:09
>379
そんなのは判り切ってるんです
packageから入れたのに自動でincludeパスの設定がされなかったことを問題にしてるんですよ!!
0382デフォルトの名無しさん2010/02/20(土) 19:45:52
>>380
うちはそんなもの作られなかった
ひょっとしてインストール先を
C:\Qt じゃなくて
C:\ にしたんじゃないの?
0383デフォルトの名無しさん2010/02/20(土) 19:58:50
>>382
いやインストール先をいじった覚えは無いんだが
0384デフォルトの名無しさん2010/02/20(土) 20:16:07
>>380
http://support.microsoft.com/kb/950683
0385デフォルトの名無しさん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 に関する問題点の報告に時間を割いていただき、 どうもありがとうございます。
0386デフォルトの名無しさん2010/02/20(土) 20:32:15
>>379
includeはきちんとやってるよ。

#include <QtGui/QApplication>

ってな感じで。もちろん

#include <QApplication>

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

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

> qmake -project
> qmake
> make

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

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

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

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

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

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

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

再度インストールしなおそうと思うんだけどパッケージからインストールすべきか、
本家からソースコードをとってきて地道にコンパイルしてインストールすべきか迷う。。。
0404デフォルトの名無しさん2010/02/21(日) 03:56:48
FreeBSD > Compiling application with QT
http://www.cyberciti.biz/tips/freebsd-compiling-application-with-qt.html
0405デフォルトの名無しさん2010/02/21(日) 05:39:55
本家からソースコードをとってきて地道にコンパイルしてインストールすべき
0406デフォルトの名無しさん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を読み込むのに時間がかかっているということでしょうか?
短縮させる方法は無いでしょうか?
0407デフォルトの名無しさん2010/02/21(日) 12:22:58
WMを窓から投げ捨てる
0408デフォルトの名無しさん2010/02/21(日) 12:43:46
>>407
やっぱり無理ですか?
自分の知識不足だろうと思ったんですが・・
.netの起動より遅いんですよねorz
0409デフォルトの名無しさん2010/02/21(日) 13:10:59
staticにリンクしたらどうだ?
0410デフォルトの名無しさん2010/02/21(日) 13:14:09
自分もWindows上でQt + MinGWという環境で開発しているけど
それを外部で実行する際に必要なDLL一式って何を取りそろえばいいんだっけ?
一カ所にまとまっていたりしない?
0411デフォルトの名無しさん2010/02/21(日) 13:29:48
Dependency Walkerで調べて,binディレクトリから拾ってくればOK。

つ ttp://www.dependencywalker.com/

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

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

> QtCore4.dll
> QtGui4.dll

このdllファイルって

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

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

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

\Qt\2010.02\qt\bin

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


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

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

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

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

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

thisを渡すとMainWindowが親になっちゃうから
0432デフォルトの名無しさん2010/02/22(月) 21:26:57
>>427 >>431
結局コンストラクタで何を引数にしていても
menuBar()->addMenu(m_fileMenu);
で上書きされると思うんだが
0433デフォルトの名無しさん2010/02/22(月) 21:36:37
QMenuのヘルプを読む限り、QMenuのコンストラクタに渡すparentは他のQObject
からの派生クラスと同じように、自動deleteのためだけのようだよ。
だから>>427の例ではにコンストラクタの引数は別にthisでもいいんじゃないの?
0434デフォルトの名無しさん2010/02/22(月) 21:45:31
>>433
メニューバー交換したらリークしませんか?
0435デフォルトの名無しさん2010/02/22(月) 21:53:37
メニューとメニューバーの親子関係と、QObjectの自動破棄メカニズムは
別のものだから関係ないような気がするけど...
0436デフォルトの名無しさん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で配置するのは不可能です。

初心者まるだしですいません、よろしくお願いします。
0437デフォルトの名無しさん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)
0438デフォルトの名無しさん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'))
0439デフォルトの名無しさん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 用だけアップデートだと。
0440デフォルトの名無しさん2010/02/23(火) 02:03:16
>>439
上書きインストールってできたっけ?
それとも一度アンインストールする必要あり?
0441デフォルトの名無しさん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)
の引数の型と一致していないんじゃない?
0442デフォルトの名無しさん2010/02/23(火) 19:32:49
QNetworkAccessManager::finished(QNetworkReply *reply)
でダウンロード後の処理をしようと思うのですが、
QNetworkReply::finished()
の方とどっちでするのが良いでしょうか?
前者は複数セッション同時にダウンロードしてても大丈夫でしょうか?
0443デフォルトの名無しさん2010/02/23(火) 21:26:44
やりたいようにやればいいんでね?
0444デフォルトの名無しさん2010/02/23(火) 23:25:58
QPixmapをloadしたいのですが、
実行ファイルを開発環境以外に移して実行すると、png以外開けません。

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

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

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

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

そこにあるqjpeg4.dllやqgif4.dllを詰め込んでみましたが、これでは駄目でした。
どこかで明示しないといけないのでしょうか?
0450デフォルトの名無しさん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
04514442010/02/24(水) 00:31:59
>>450
できました!
結果的には、おっしゃるように、アプリケーションと同じ場所に imageformats を作れば良かったようです。
それまでは、dllを直に置いていました。

ありがとうございました!
0452デフォルトの名無しさん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();
}
0453デフォルトの名無しさん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();
}
0454デフォルトの名無しさん2010/02/24(水) 04:13:02
qt-4.4.3を使っているんですが。
tooltipを表示する速度を変更することはできますか?
0455デフォルトの名無しさん2010/02/24(水) 12:18:49
>441
ありがとうございます。おっしゃる通りでした!
QLayoutItemの型に合わせるのにてこずりました。。
0456デフォルトの名無しさん2010/02/24(水) 20:27:31
ボタンなどではなく、QLabelやフォームからclickedのシグナルを検知することはできますでしょうか?
QTデザイナーでシグナル&スロット編集で見れるものしかとれないのでしょうか。。
0457デフォルトの名無しさん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

なんだろね(´・ω・`)?
0458デフォルトの名無しさん2010/02/24(水) 20:56:00
>>456
そもそも QLabel や QLineEdit などには clicked() シグナルがないので無理。
mouserPressEvent(), mouseReleaseEvent() を継承して自分で clicked() シグナルを出すか、
編集がいらない場合はボタンをラベル的に扱うか。
0459デフォルトの名無しさん2010/02/24(水) 20:57:55
>>457
普通にエラーメッセージ通りなのでは?
スワップできないとかあるから、
HDD掃除かパーティーションきり直しか。

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

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

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

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

使い方変わったのかな?

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

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

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

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

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

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

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

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

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

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

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

#else
// other( mac or other unix)

#endif

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


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

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

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

あとは過去との互換性。
0515デフォルトの名無しさん2010/02/27(土) 13:52:41
Qt Designer は Qt Creator があれば必要ないように思うんだけど
Qt Designer にしかできないことってあるの?
0516デフォルトの名無しさん2010/02/27(土) 13:54:56
QtCreatorを使わない人が使う。
0517デフォルトの名無しさん2010/02/27(土) 14:17:06
>>515
Qt Creator は Qt Designer のラッパ的なものでしょ?
0518デフォルトの名無しさん2010/02/27(土) 14:18:10
お前は何を言っているんだ
0519デフォルトの名無しさん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
0520デフォルトの名無しさん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が無いのでこちらで書き足さないと
ダメみたいですが、

格上げ用のクラスファイルの作り方はどれが正解でしょうか?
0521デフォルトの名無しさん2010/02/27(土) 19:40:25
>>520
後者。引数は特に付け足さなくてもいい。
05225202010/02/27(土) 22:23:34
>>521
ありがとございます。
でも、引数なしにすると
no matching function for call
のエラーになってしまいます。
0523デフォルトの名無しさん2010/02/28(日) 01:25:12
CustomClass::CustomClass() : parentClass(){
05245222010/02/28(日) 12:00:58
引数なしだと、やはり
no matching function for call to'Drawing::Drawing(QWidget*&)'
となり
void setupUi8QMainWindow *MainWindow)
{
.
.
widget = new Drawing(centralWidget);
のところが指摘されます。

なにか、やり方がまずい?
0525デフォルトの名無しさん2010/02/28(日) 12:29:15
「格上げ」って、サブクラスを作る機能だというのはわかるんだけど、
そもそもどういう時に使うの?
0526デフォルトの名無しさん2010/02/28(日) 12:41:56
質問失礼します。
PyQtを使っています。
QTDesignerで作成したuiファイルから取得したwindowを
別のWindowとして表示したいのですが

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

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

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

・・・これって合法な代物なの?
えらそうに英語版PDFがあるっていうから、
てっきり合法なんだと思ってるんだけど。
0548デフォルトの名無しさん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版だとちゃんと表示されるんだけどな・・・
0549デフォルトの名無しさん2010/03/03(水) 02:08:09
>>548
CONFIG += console
05505482010/03/03(水) 02:17:24
>>549
ありがとう
でも、それってコマンドプロンプト起動してそこに実行結果表示するやつだよね?
そうじゃなくてQt Creatorのアプリケーション出力に出力したいんだよ
0551デフォルトの名無しさん2010/03/03(水) 02:32:52
>>545
お雷リーってそういう本だろ
0552デフォルトの名無しさん2010/03/03(水) 02:44:31
>>547
本は白黒なのにPDFの方はカラーだよね
それに(日本語の)本の方は誤字脱字だらけで
ソースもバグだらけだけど
PDFの方は問題ないんだよねw
0553デフォルトの名無しさん2010/03/03(水) 02:46:56
>>550
qDebug()
0554デフォルトの名無しさん2010/03/03(水) 03:24:33
>>548
WindowsのGUIアプリにはprintfとかcoutの出力先が基本的に存在しない
デバッガのコンソールに出力したい場合はAPIのOutputDebugString()というのを使う
Qt使ってる場合はqDebug()でおk
0555デフォルトの名無しさん2010/03/03(水) 09:02:13
qDebug()文字化けするお
0556デフォルトの名無しさん2010/03/03(水) 09:38:58
>>555
オライリー「入門 Qt4プログラミング」の付録A 日本語関連FAQ 参照
0557デフォルトの名無しさん2010/03/03(水) 11:52:42
MainwinodwにQWidetを貼って、これを格上げして
ui->widget->メンバー関数 で使ってたものを
外のQListWidgetやQpushButtonなどと水平レイアウトでくくりと
QWidget has not menber name メンバー関数になってしまいます。

なぜでしょうか
0558デフォルトの名無しさん2010/03/03(水) 17:50:46
>>555-556
あれ間違ってるんだよなー
0559デフォルトの名無しさん2010/03/03(水) 19:03:44
間違っているってどこが?
0560デフォルトの名無しさん2010/03/03(水) 23:14:30
>>553,554
ありがとう
0561デフォルトの名無しさん2010/03/04(木) 12:29:12
Windows XP(コンパイラはVC 2008)でQt Creatorで作ったアプリのデバッグしてるんだけど,
デバッガの動きが極端に遅い。デバッグヘルパOFFにしてみたけど大差なし。

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

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

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

MainWindowにresizeEventを書いて、ここで
ui->TextEdit->setMaximumSize で出来そうな気がしますが
setMaximumWidth(sizeHint().width()); としたら、TextEditのminimumSizeに
なってしまいました。
sizeHintは最適なサイズを返す関数だと思うんですが、
0570デフォルトの名無しさん2010/03/04(木) 23:00:26
>>547
心配ならこの中から探して落とせ
ttp://qt.nokia.com/developer/learning/qt-essentials-curriculum-block
0571デフォルトの名無しさん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 もリサイズするけど )
05725692010/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版のせい?
0573デフォルトの名無しさん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
0574デフォルトの名無しさん2010/03/05(金) 21:21:33
>>572
>QListViewをFixedの QTextEditをExpandingに設定し 両方を選択
>右クリックからレイアウト>水平に配置

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

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

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

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

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

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

開発目的が商用なのかそうじゃないのかを事前に
判断できないケースはそうそうないでしょ。
0604デフォルトの名無しさん2010/03/09(火) 13:50:34
試したいなら評価用ライセンスもあるからな。
納得いくかどうかは別として理解は出来る。

LGPL 版使って商用アプリを出すことも出来るから
わざわざ商用ライセンスを買うこともないと思うが。
0605デフォルトの名無しさん2010/03/09(火) 15:49:11
質問です:

Qt Creatorを使って".ui"ファイルをポトペタ修正していますが、
menuToolsに"Setup"と文字列設定すると実行時にそのメニューが消えてしまいます。
"Setup"でなくて、先頭にスペースを入れて" Setup"としたり、
末尾を切って"Setu"とかすると、メニューが表示されます。

さらにQt CreatorをMac OSで使ってる場合のみで、Windowsでは発生しないみたいです。

原因を知りたいですし、その次には、どうやって対処したら良いのでしょう?
0606デフォルトの名無しさん2010/03/09(火) 15:49:37
QtWebkitとかって
商用版でもLGPLになるのか
0607デフォルトの名無しさん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 でも設定できる。
06086052010/03/09(火) 16:36:46
>>607
OKでした。席外して帰ってきたらさっそくご回答有難うございましたorz
0609デフォルトの名無しさん2010/03/09(火) 16:51:42
連続質問スマソ:

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

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

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

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

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

上記の流れだと connect() が呼び出されてはないが、 Ui クラスの中で connectSlotsByName() が
呼び出されているため、自分で別途 connect() する必要はない。
06116092010/03/09(火) 17:25:16
�d。出来ましたorz
menuToolsだと、clicked()が無いので、戸惑いました。
仕方なくとりあえず、triggered()がデフォだったので、それでイベントハンドラ作成されて、メッセージボックス表示させてみましたw
0612デフォルトの名無しさん2010/03/09(火) 19:31:51
>>606
元々LGPLで一部BSDライセンス。PhononとCLuceneもLGPL。
OpenSSLを有効にしていて、OpenSSLライブラリを配布しようとすると
ライセンスと輸出入制約がある。
0613デフォルトの名無しさん2010/03/09(火) 21:14:19
>>612
4.6 からは JavaScriptCore ベースに変わった影響で QtScript モジュールも LGPL になってる。
0614デフォルトの名無しさん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();
}
0615デフォルトの名無しさん2010/03/10(水) 00:02:49
http://doc.trolltech.com/4.6/qmake-running.html#project-mode-options
0616デフォルトの名無しさん2010/03/10(水) 00:14:48
>>615
え〜と・・・、何が足りなかったんでしょう・・・
0617デフォルトの名無しさん2010/03/10(水) 00:16:11
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!

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

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

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

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

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

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

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

6.5.4なら問題無かった
次のバージョンでは直ってることを祈ろう
0636デフォルトの名無しさん2010/03/11(木) 11:29:54
6.5.4って?
0637デフォルトの名無しさん2010/03/11(木) 11:52:32
Visual Studio
0638デフォルトの名無しさん2010/03/11(木) 12:25:36
>>627
大きな釣り針?
0639デフォルトの名無しさん2010/03/11(木) 12:45:46
>>637
VS6(でコンパイルしたQt)だとIME遅くならないけど,2008だと遅くなるってこと?
話がよく見えない。
0640デフォルトの名無しさん2010/03/11(木) 13:03:37
横から
qt-win-opensource-4.6.2-mingw.exe
で同じようにLineEditだけ遅いのを確認
0641デフォルトの名無しさん2010/03/11(木) 13:23:55
漏れも良くわからん
0642デフォルトの名無しさん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;」の中に一括イベントハンドラがあるかないか。
0643デフォルトの名無しさん2010/03/11(木) 19:14:40
>
>
>
>
>
>
>
>どゆこと?
06446342010/03/11(木) 19:17:29
>6.5.4
4.5.3の間違いですた。。。
http://qt-msvc-installer.googlecode.com/files/qt-win32-opensource-4.5.3-vs2008.exe
0645デフォルトの名無しさん2010/03/11(木) 19:22:47
OWLを思い出した
0646デフォルトの名無しさん2010/03/11(木) 20:42:47
会社の課題で4月1日までに、Rubyで何かを作らないといけないんだけど
Ruby + Qt4で作ったアプリを*.exeに固められる?
まだ、Rubyの文法もわからん
0647デフォルトの名無しさん2010/03/11(木) 20:46:20
exerb
0648デフォルトの名無しさん2010/03/11(木) 21:02:47
>>647
thx
0649デフォルトの名無しさん2010/03/11(木) 22:41:44
http://labs.trolltech.com/blogs/2010/03/11/qt-470-tech-preview-released/
0650デフォルトの名無しさん2010/03/11(木) 22:46:40
>>627
おまえにQtは無理w
0651デフォルトの名無しさん2010/03/12(金) 01:38:38
この更新の勢いならweb環境も制覇してくれそう
0652デフォルトの名無しさん2010/03/12(金) 02:10:37
春休み最強
06536422010/03/12(金) 08:50:21
>>643
>a.exec();

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

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

こちらです。
0657デフォルトの名無しさん2010/03/12(金) 12:17:10
C++の勉強して出直して来い
0658デフォルトの名無しさん2010/03/12(金) 12:42:02
>>653

> >a.exec();
>
> を囲んで一括catchして、
> そのエラー処理でもう一回「a.exec();」するってことは出来ないですよね?

何がしたいんだかわからん。何でcatch節の中でもう一回a.exec()するの?

俺はC++ Builder使いだけど,OnExceptionなんて使ったことないよ。
要するにどこでも catch されなかった例外をつかまえて処理するんでしょ。
ただの外部例外防止の意味だけのようにしか思えん。
どこでもcatchされない例外をthrowするようなコード書くほうが悪いと思うが。

普通に try 〜 throw 〜 catch で何か都合が悪いの?
0659デフォルトの名無しさん2010/03/12(金) 13:05:30
おわらないようにしたいんじゃね?でーもんとかwww
0660デフォルトの名無しさん2010/03/12(金) 13:10:11
春休みですね。
06616422010/03/12(金) 13:11:35
>>659 おわらないようにしたいんじゃね?
その通りでつ。
C++ Builderだと、throw してcatchされなくてエラーメッセージボックスが出るだけですよ。
その動作を変えたい場合は、アプリケーションオブジェクトのイベントハンドラで先に例外catchできまつ。
06626422010/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;
}

0663デフォルトの名無しさん2010/03/12(金) 20:54:12
qt creatorってけっこう完成度高いな
0664デフォルトの名無しさん2010/03/13(土) 00:50:21
2.0入れてみた
オプションを弄ろうとしただけで落ちたwww
0665デフォルトの名無しさん2010/03/13(土) 00:57:12
TP判とはいえあまりにも簡単に落ちすぎw
0666デフォルトの名無しさん2010/03/13(土) 11:59:12
プロトタイプ宣言をソースにもっていくときって
やっぱコピペですか?
0667デフォルトの名無しさん2010/03/13(土) 12:41:11
>>35
それ間違ってるよ
その条件だと全てのソースを公開する必要がある
LGPLでソース非公開で良いのは、動的リンク且つDLLを同梱しない場合に限る
0668デフォルトの名無しさん2010/03/13(土) 13:15:04
DLLを同梱しない場合
なんて制限書いてあったっけ?
0669デフォルトの名無しさん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でインストールしたからでしょうか?

こういうエラーで詰んだ場合はどうすればいいでしょうか?
0670デフォルトの名無しさん2010/03/13(土) 13:29:25
symbolic link作ればいいだけなんとちゃう?
0671デフォルトの名無しさん2010/03/13(土) 14:34:51
手動でシンボリックリンク作成ですかorz・・・

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

qmake
lrelease

でなく、

qmake-qt4
lrelease-qt4

なんでしょうか?
0672デフォルトの名無しさん2010/03/13(土) 16:55:25
名前がぶつかるから
0673デフォルトの名無しさん2010/03/13(土) 16:58:40
え( ´・ω・)?
0674デフォルトの名無しさん2010/03/13(土) 17:14:19
お前がそう思うならそうなんだろう
お前の中ではな
0675デフォルトの名無しさん2010/03/13(土) 19:50:54
そうなのか。知らなかった。
0676デフォルトの名無しさん2010/03/14(日) 06:57:10
なんでしょうか?
0677デフォルトの名無しさん2010/03/14(日) 08:10:06
逝ってよし
0678デフォルトの名無しさん2010/03/14(日) 15:48:05
Qtでメモリリークを調べる方法ってどうやればいいんでしょうか?
ttp://www.off-soft.net/ja/develop/qt/qt4.html
このページのやり方試してみましたがリンク時にnewとdeleteが既に定義済み
とか言われてエラーになってしまいます。
0679デフォルトの名無しさん2010/03/14(日) 17:56:34
>>678
C++用で充分にC++に対応できているメモリリークチェックツールで調べられます。
0680デフォルトの名無しさん2010/03/14(日) 19:16:36
レスありがとうございます。
今まではVCに標準で付いていたcrtdbg.hを使うやり方だったのですが、
それだとうまくいかないようだったので。
他にもそういうツールがあるのですね。調べてみます。
0681デフォルトの名無しさん2010/03/14(日) 21:03:22
WinXP 環境に、
http://qt.nokia.com/downloads-jp
から Qt SDK: 包括的な開発環境 をダウンロードし、セットアップしました。
Qt Craetor を起動すると、マウスクリックが1回しか効きません。
Qt Creator 以外の部分をクリックすると、1回だけマウスクリックが効きます。

これって回避方法があるのでしょうか?
0682デフォルトの名無しさん2010/03/15(月) 01:09:46
OS再インストール
0683デフォルトの名無しさん2010/03/15(月) 07:54:04
>>681
うちは大丈夫
0684デフォルトの名無しさん2010/03/15(月) 11:34:14
/*! を使うとコメントをドキュメント化できるんでしょうか?
うまくぐぐれなくてorz
使用方法等のリンクあれば貼ってもらえないでしょうか?
0685デフォルトの名無しさん2010/03/15(月) 11:59:33
>>684
Doxygen
0686デフォルトの名無しさん2010/03/15(月) 12:52:56
>>685
ありがとうございます
0687デフォルトの名無しさん2010/03/15(月) 13:12:39
.proファイルに使える設定項目の一覧ページってどこかにないですか?
0688デフォルトの名無しさん2010/03/15(月) 15:13:17
qtの過去バージョンってどこで落せるの?
Qtライブラリのソースを求められたらどうすれば良いの?
0689デフォルトの名無しさん2010/03/15(月) 15:18:50
ここかな
http://get.qt.nokia.com/qt/source/
0690デフォルトの名無しさん2010/03/15(月) 15:35:50
>>689
サンクス、このアドレス載せておけば大丈夫って事かな
0691デフォルトの名無しさん2010/03/15(月) 15:37:23
>>687
これかな?

つ ttp://qt.nokia.com/doc/4.6/qmake-variable-reference.html
0692デフォルトの名無しさん2010/03/15(月) 15:39:35
>>691
ありがとうございます
思ってたよりおおいな・・
0693デフォルトの名無しさん2010/03/16(火) 12:48:07
rubyでqt4やっている人居ますか?
0694デフォルトの名無しさん2010/03/16(火) 19:09:50
はい
0695デフォルトの名無しさん2010/03/16(火) 19:19:14
>>694
環境はどうしてます?
0696デフォルトの名無しさん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なのにこんなこと出きるんだよ〜
0697デフォルトの名無しさん2010/03/16(火) 21:35:22
'で囲むのがださい
0698デフォルトの名無しさん2010/03/16(火) 21:42:37
>>693
RubyのQtは、完成度低過ぎるので捨てました。
0699デフォルトの名無しさん2010/03/16(火) 22:56:06
PythonはPyQt4.7ですごくなったよな
self.foobtn.clicked.connect(foo_clicked)
みたいに、signalに . でアクセスできる。
0700デフォルトの名無しさん2010/03/16(火) 23:07:12
最近Qtみたいな統合環境をわざわざLLでやるメリットが感じられない。
.netのC#に対するVBみたいなものなのかな?
0701デフォルトの名無しさん2010/03/16(火) 23:11:57
コンパイル時間かかるじゃん
07026932010/03/16(火) 23:12:17
ひとまず、QMainWindowを継承してメニューを追加する所までは作る事ができました
専用のIDEの有無ってデカいなと思いました

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

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

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

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

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

どこかにその方法を説明してあるところはありますでしょうか?
0721デフォルトの名無しさん2010/03/17(水) 16:18:24
あきらめろ
07227202010/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 です。
0723デフォルトの名無しさん2010/03/17(水) 16:46:30
以前,Qt Creatorをソースからビルドしたことがあって,今はもうソースファイルもダウロードした
パッケージも消してしまった(ディスクの容量枯渇w)ので具体的にはわからないけど,
ソースパッケージを解凍した中に,ビルド方法が書いてあるテキストファイルがない?
07247202010/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)

と書いてあった。(続く)
07257202010/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
0726デフォルトの名無しさん2010/03/17(水) 16:58:36
エラー読んでる?
その箇所張られてもどうしようもないんだけど
0727デフォルトの名無しさん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
===
これ?
0728デフォルトの名無しさん2010/03/17(水) 17:04:57
C:\Qt\2010.02.1\mingw\bin
にパスを通したら、コンパイルが始まりました。

どうもお騒がせしました。m(_ _)m
&アドバイスありがとうございました。
0729デフォルトの名無しさん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 とかいくつかあるけど大丈夫?
0730デフォルトの名無しさん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 を起動できて、プラグインの修正が反映されていることを確認した。

どうやらビルドはうまくいったみたいだ。
0731デフォルトの名無しさん2010/03/17(水) 21:34:43
>>715
それは絶対にない。
0732デフォルトの名無しさん2010/03/17(水) 21:35:13
PythonバインディングでPySideを使ってる人はいないのかな?
俺はWindowsがサポートされてから試してみようかなと思ってる
0733デフォルトの名無しさん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")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0761デフォルトの名無しさん2010/03/21(日) 11:37:01
日本語でどうぞ
0762デフォルトの名無しさん2010/03/21(日) 12:18:01
日本語を学んでください
0763デフォルトの名無しさん2010/03/21(日) 12:29:33
ドキュメント読むには英語学んだほうがいいとおもうけど・・
0764デフォルトの名無しさん2010/03/21(日) 12:53:12
>>763
その前に母国語を学んだ方がいいだろjk
0765デフォルトの名無しさん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でビルドできない理由は何でしょうか?
0766デフォルトの名無しさん2010/03/21(日) 19:05:28
またFreeBSDかよ
0767デフォルトの名無しさん2010/03/21(日) 19:19:08
>コンソールからのコンパイルは問題なくできているのでおそらくQt自体のインストールには
>成功していると思うのですが、QtCreatorでビルドできない理由は何でしょうか?
 有効なQtバージョンが設定されていません。ツール/オプションで1つ設定してください。
0768デフォルトの名無しさん2010/03/21(日) 19:34:11
Mac版Qt4.6.2/QtCreator1.3.1でバグっぽいのが。
QtCreator上でソースコード編集中に日本語入力すると余分に改行が入る。

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

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

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

そこで、直接4.6.2のqtdemos/texteditを動かして、手順通りにやってみたけれど再現できなかった。
0771デフォルトの名無しさん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で書いてたらキリがないし
何もわざわざ非同期にするほどの重い処理でもないので同期でやりたいのですが、
もし不可能なら、そういうのを書く場合の定石ってあるのでしょうか?
0772デフォルトの名無しさん2010/03/21(日) 21:32:59
自動検出ってたしかPATHを見てるだけじゃないか?
0773デフォルトの名無しさん2010/03/21(日) 22:00:20
政府と官僚を盲信しすぎだ
たった一握りの人間が産業の興廃を決めるのは共産主義
政府が金銭的に支援すると企業が消費者のことではなくて
役人のご機嫌取りに走るから産業の成長を阻害するんだよ
0774デフォルトの名無しさん2010/03/21(日) 22:26:16
>>773
どこのスレの誤爆ですか
0775デフォルトの名無しさん2010/03/22(月) 01:25:12
>>771
whlie (!reply->isFinished())
QCoreApplication::processEvents();
0776デフォルトの名無しさん2010/03/22(月) 01:25:36
Qtをキュートと呼ぶのに抵抗を感じるのはおれだけですか
0777デフォルトの名無しさん2010/03/22(月) 01:28:13
まぁ、ね。
でも、検索のしにくさに比べたら、どうということはないなぁ。
0778デフォルトの名無しさん2010/03/22(月) 01:29:28
cute だって最後の t は無声音 (kju:t) だぞ
むしろそのまんま
0779デフォルトの名無しさん2010/03/22(月) 02:08:42
>>776
cuteとcue teaのどっちでもいいんだよ。
0780デフォルトの名無しさん2010/03/22(月) 03:01:33
Qt Creatorを使っている人、
解像度どれくらいのディスプレイ使ってる?
0781デフォルトの名無しさん2010/03/22(月) 03:18:15
wqxga
0782デフォルトの名無しさん2010/03/22(月) 07:33:36
wsxga+
0783デフォルトの名無しさん2010/03/22(月) 09:21:18
>>775
できました
ありがとうございます
0784デフォルトの名無しさん2010/03/22(月) 10:16:56
>>776
激しく動悸
0785デフォルトの名無しさん2010/03/22(月) 10:38:40
最近.netからQtに引っ越したんですが・・・
コレはるかに.netより使いやすい・・・
0786デフォルトの名無しさん2010/03/22(月) 10:40:24
ですね
0787デフォルトの名無しさん2010/03/22(月) 10:44:08
それは間違いないな
0788デフォルトの名無しさん2010/03/22(月) 12:21:01
まあQtスレだしな。

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

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

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

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

>>796
FreeBSD以外のプラットフォームにする
0801デフォルトの名無しさん2010/03/22(月) 15:31:56
>>796
商用版にして公式サポート受けろ
0802デフォルトの名無しさん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 の問題。
0803デフォルトの名無しさん2010/03/22(月) 15:39:52
>>796
FreeBSD使った事ないんでよく解らんけど
パスが通ってないだけなんじゃないの?

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

/usr/local/bin/qmake

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

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

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

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

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

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

はい、試してみましたがあいにくうまくいきませんでした・・・
0824デフォルトの名無しさん2010/03/23(火) 09:10:56
Qt には QVector など、STLのコンテナと同等のものがありますが、
それには何か明確な理由があるのでしょうか?
0825デフォルトの名無しさん2010/03/23(火) 11:22:46
QtのオブジェクトはQtがガベコレしてくれるから
0826デフォルトの名無しさん2010/03/23(火) 11:43:29
>>824
foreachを書ける、ストリームにシリアライズ可能とか?
0827デフォルトの名無しさん2010/03/23(火) 11:46:03
実質的に文字コードを気にしなくてよくなるのはありがたいなぁ
0828デフォルトの名無しさん2010/03/23(火) 11:48:13
Qt Creatorでメインプロジェクトの中に複数のサブプロジェクトを含めた構成にしたいんだけど
どうやってCreatorで操作すればいいんだろうか。
例えば以下のような構成のプロジェクト構成にしたい。
 Hoge  <-メインプロジェクト
  +-- GUIアプリケーション(Hoge/HogeMain)  <-サブプロジェクト1
  +-- C++ライブラリ(Hoge/HogeLib)  <-サブプロジェクト2
今Creatorから上記の3つのプロジェクトを作って、保存後にメインプロジェクトを開いてみたけど
サブプロジェクトが含まれてなかった。。。
0829デフォルトの名無しさん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の同時デバッグも可能。
0830デフォルトの名無しさん2010/03/23(火) 12:47:48
ありがとうございました
08318282010/03/23(火) 12:51:56
>>829
なるほど!.proファイルを自分で編集しないとダメなのね。。。
ありがとう。
08328292010/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/
}


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

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

gが全角`o'
08368292010/03/23(火) 17:08:14
debugがdegugになってるのにも気付いて欲しかったw
0837デフォルトの名無しさん2010/03/23(火) 17:31:28
QFrameって何すんの?
0838デフォルトの名無しさん2010/03/23(火) 17:59:46
>>837
つ http://doc.trolltech.com/4.6/qframe.html
0839デフォルトの名無しさん2010/03/23(火) 20:29:14
Qtで、アプリケーションにフォーカスがないときに、キーボードイベントを
とる事(グローバルフック?)って出来ますか?
今押されてるキーを表示するようなユーティリティを作ろうと思ってます。
0840デフォルトの名無しさん2010/03/23(火) 21:08:27
>>839
組込みLinux用のQtはできる。
0841デフォルトの名無しさん2010/03/23(火) 21:37:00
普通はそういうのは作らんなぁ
端末にバインドしてない keylogger みたいなもんか
0842デフォルトの名無しさん2010/03/24(水) 00:02:40
QtRubyってQThread無いの?
教えてエロい人!!
0843デフォルトの名無しさん2010/03/24(水) 00:21:45
Rubyってネイティブスレッド使えたっけ?
0844デフォルトの名無しさん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
0845デフォルトの名無しさん2010/03/24(水) 00:31:54
PythonじゃなくてRuby選んでる時点で、いろんなライブラリの対応が二級市民になる
ことを覚悟してるんだろ?wxもgtkもさ。
0846デフォルトの名無しさん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;
...
}
0847デフォルトの名無しさん2010/03/24(水) 08:32:35
>>846
> スロットはvoid型しかできません。
戻り値があっても構いません。
スロットは、メタオブジェクトにその情報が格納され、シグナルと接続でき、メタ情報からの
メソッド呼出しなどができる他は、普通のメソッドと同じです。シグナルによって呼ばれた場
合には、戻り値が使われないだけで、単にスロットをメソッドとして呼出して、戻り値を得る
ようにするのは、問題なくできます。
08488422010/03/24(水) 08:39:08
>>845
知ってるよ
でも、自分では選択権が無いもんでね
0849デフォルトの名無しさん2010/03/24(水) 08:50:53
横からですが
ありがとうございました
0850デフォルトの名無しさん2010/03/24(水) 11:34:04
CFLAGSに"-D_USE_32BIT_TIME_T"を追加したいのですが、
.proにはどのように書けば良いのでしょうか?
今はMakefileのCFLAGSに、直接手で追加しています…
0851デフォルトの名無しさん2010/03/24(水) 12:31:49
>> 842
ありません。
0852デフォルトの名無しさん2010/03/24(水) 12:34:35
>>850
普通に DEFINES += 使えばいいんじゃね?
あとは QMAKE_CFLAGS_DEBUG とか QMAKE_CFLAGS_RELEASE とか。
Assistantで 「qmake Variable Reference」探してみて。

0853デフォルトの名無しさん2010/03/24(水) 14:15:07
>>709
ttp://owa.as.wakwak.ne.jp/zope/docs/Python/BindingCpp
ttp://owa.as.wakwak.ne.jp/zope/coreblog/199
0854デフォルトの名無しさん2010/03/24(水) 15:07:31
Qt Creator プラグインの開発を始めたので、近日中に公開しようと考えているのですが、
どこで公開するのがいいのでしょうか?

おすすめの場所があったら教えてください。
08558502010/03/24(水) 15:41:15
>>852
できました!ありがとうございます。
0856デフォルトの名無しさん2010/03/24(水) 16:03:58
>>854
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0857デフォルトの名無しさん2010/03/24(水) 16:47:29
>>854
qt-apps.org
0858デフォルトの名無しさん2010/03/24(水) 20:53:56
>>854
ttp://qt.nokia.com/resources-jp/the-qt-contribution-model
0859デフォルトの名無しさん2010/03/24(水) 21:22:44
>>851
それじゃ、スレッド使った処理は書けないの?
0860デフォルトの名無しさん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
08618392010/03/25(木) 13:21:36
>>840-841
ありがとうございます。環境依存になってしまうって事ですね。
今回はWindowsを対象にしてるので、WinAPIで考えてみることにします。
0862デフォルトの名無しさん2010/03/26(金) 11:32:20
ありがとうございます
0863デフォルトの名無しさん2010/03/26(金) 15:19:10
PyQtでself.trを使うとUTF-8のとき文字化けします
espおながいします
0864デフォルトの名無しさん2010/03/26(金) 19:23:17
>>863
QTextCodec.setCodecForTr(QTextCodec.codecForName('UTF-8'))とすると文字化けせずに表示されました。
0865デフォルトの名無しさん2010/03/26(金) 22:21:52
>>864
ありがとうございますた
0866デフォルトの名無しさん2010/03/28(日) 07:14:20
ttp://blog-imgs-26-origin.fc2.com/a/k/u/akushukai/3484068.jpg
ttp://www.dailymotion.com/swf/x26nox
おっぱいおっぱい
0867デフォルトの名無しさん2010/03/28(日) 10:41:13
Designerで、一旦グループボックス内に、ラジオボタンなどを配置すると
後から高さや幅を変更できません
どうにかならない?
0868デフォルトの名無しさん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
レイアウトのリファレンスを読めばよい。
0869デフォルトの名無しさん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から取り除くの面倒なんですが
最初から?がダブらないようにするにはどうやるんでしょうか?
0870デフォルトの名無しさん2010/03/28(日) 17:55:53
QString params = QString("id=%1&password=%2").arg(id, pw);
QByteArray paramdata(params.toAscii());
じゃダメなの?
0871デフォルトの名無しさん2010/03/28(日) 18:17:16
いや、全然ダメじゃないんだけどせっかくaddQueryItem()とかいうのがあるんで
これ使ってできるはずなんじゃないかな?と
0872デフォルトの名無しさん2010/03/28(日) 19:02:22
MinGW版でphonon使うとogg再生できないんですけど
みなさんもそうですか?
0873デフォルトの名無しさん2010/03/28(日) 22:19:58
ogg以前にMinGW版でPhonon呼び出せなかった気がするんだが
PhononはDirectShow9を要求するけどMinGWはそれをコンパイルできないから使えないって話をどこかで読んだ
0874デフォルトの名無しさん2010/03/28(日) 23:44:42
>>871
http://qt.nokia.com/doc/qurl.html#encodedQuery は?
0875デフォルトの名無しさん2010/03/29(月) 00:14:33
>>874
それだわ!ビンゴ
0876デフォルトの名無しさん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に全くひっかからずに最後まで通ってしまうこともあります。
原因は一体何なのでしょうか?
0877デフォルトの名無しさん2010/03/29(月) 02:04:05
'\0'で文字列を終わらせてないから。
読み込みは正しく4バイトだけ読み込まれてると思うぞ。
0878デフォルトの名無しさん2010/03/29(月) 02:07:22
なるほどありがとうございます。
長文すいませんでした。
0879デフォルトの名無しさん2010/03/29(月) 14:27:29
SIGNAL-SLOTでSLOT側の関数で
SIGNALを発したオブジェクトが何であるかを取得できるでしょうか?
念頭においてるのはpushButtonのclicked()です。
0880デフォルトの名無しさん2010/03/29(月) 15:07:01
QObject::sender() で取得できる。

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

とかやればよい。
0881デフォルトの名無しさん2010/03/29(月) 15:19:36
>>880
即レス大変感謝です
思うようにいきました
0882デフォルトの名無しさん2010/03/29(月) 15:26:03
つか、C#の delegateでsenderとかよりシンプルでますます気に入りますたw
0883デフォルトの名無しさん2010/03/29(月) 15:49:08
よこからありがとうございました
0884デフォルトの名無しさん2010/03/29(月) 15:50:34
C++ とは思えないシンプルさです
moc の追加仕様なんて気にしたら負けです
本当にありがとうございました
0885デフォルトの名無しさん2010/03/29(月) 20:46:14
>>882
比べるならλ式と比べてやれや
0886デフォルトの名無しさん2010/03/30(火) 00:38:12
QtCreatorのエディタの色付けの「型」って
classじゃなくてプレフィックスがQの文字列なんだね
ためしにQTaroとかでも紫色になるし・・
0887デフォルトの名無しさん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]);
  }
}
0888デフォルトの名無しさん2010/03/30(火) 11:34:45
それだとQtaroもQJiroもQ_taroも紫色になるけど,Qjiroはならないねw
0889デフォルトの名無しさん2010/03/30(火) 14:16:46
そうだね
0890デフォルトの名無しさん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 ではないと怒られます
0891デフォルトの名無しさん2010/03/30(火) 19:57:21
自己解決しますた
type(self.sender().text())
で
PyQt4.QtCore.QString
だと分かりました
0892デフォルトの名無しさん2010/03/30(火) 21:29:45
>>888
Qjは、予約されていないからです。
0893デフォルトの名無しさん2010/03/30(火) 21:38:53
>>887
その仕様なのにオプション設定のカラースキームで「型」とするのは紛らわしいよな
0894デフォルトの名無しさん2010/03/30(火) 23:44:06
初心者な質問ですいません
Qtでlibファイルをリンクするにはどうしたらよいのでしょうか?
0895デフォルトの名無しさん2010/03/30(火) 23:58:53
>>894
気合いと根性とちょっとのgnu cの知識
qtは関係ない
08968942010/03/31(水) 00:15:57
自分で調べて

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

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

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

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

>>912
4.6から追加されたQWebElementがそれらしい機能なんじゃないかな
0914デフォルトの名無しさん2010/04/01(木) 00:41:58
>>902
つ ttp://qt.nokia.com/doc/4.6/qbuttongroup.html
0915デフォルトの名無しさん2010/04/01(木) 00:46:08
>>905
ttp://labs.trolltech.com/blogs/2009/03/27/speeding-up-visual-c-qt-builds/
09169022010/04/01(木) 06:33:38
>>914
うん。そっちも使ったことあるけど、なんか>>880みたいなコーディングの方を
書いちゃうんだよね。それとQButtonGroupで何か不具合に出会った記憶が...

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

ただ,コーディング量は QButtonGroup 使っても共通スロット関数で sender() 使っても
大差ないのでお好きな方でどうぞってところかな。
0919デフォルトの名無しさん2010/04/01(木) 10:41:18
>>915
なんだぁ、jomの話じゃん。今のQt Creatorではデフォルトでnmakeの代わりにjomが使われる
から,今のスピードに満足できていない人には情報として役に立たないよぉ。
09209112010/04/01(木) 12:33:47
>>193
非表示にしたいため、setDisabledでは対応できませんでした。
gridに頼らずやるしかないのでしょうか。。。
0921デフォルトの名無しさん2010/04/01(木) 12:57:10
>>919
そりゃDelphiやC#とかヘジルスバーグ言語と
C++のコンパイル速度を比較したらいかんよw
0922デフォルトの名無しさん2010/04/01(木) 15:11:05
>>913
さっと見てみましたがQNetworkAccessとあわせて使うには
ちょっと大げさな感じになっちゃうみたいですね・・
0923デフォルトの名無しさん2010/04/01(木) 21:16:28
>>920
スペーサーかダミーのWidgetに差し替えるか、GridLayoutのサブクラスを作って
位置が変わらないようにオーバーライドするとか・・・。よく調べれば何か方法はあるはず
0924デフォルトの名無しさん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 で描画を上書きするって方法もありかも
0925デフォルトの名無しさん2010/04/02(金) 07:32:13
>>919
真実と嘘の区別が付かないのが、チョウセンヒトモドキ
0926デフォルトの名無しさん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')
みたいな表現ってできない?
0927デフォルトの名無しさん2010/04/02(金) 12:24:02
>>925
意味不明。「真実」とか「嘘」という言葉の使い方が不適切だと思われ。
では国語の問題です。

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

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

>>925はそれを「嘘」と言ってるのかな?
正直俺も何が言いたいのかよくわからん。
0935デフォルトの名無しさん2010/04/02(金) 13:20:23
>>925はゆとりだから、何を言っても無駄。
0936デフォルトの名無しさん2010/04/02(金) 13:51:31
コンパイル速度が気になるならPyQtでも使えばいいと思うのだがPyQtで書いたクラスとC++で書いたクラスの相互利用って、簡単にはできないの?
0937デフォルトの名無しさん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);
}
}

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

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

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

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

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

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

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

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

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

無知って怖いな
0961デフォルトの名無しさん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を人間が操作しないといけないクソコードになるよ。
0962デフォルトの名無しさん2010/04/03(土) 12:42:16
Cで書かれたライブラリを呼べるから本物のプログラミング言語だ(キリッとか
high-level programming languageが本物のプログラミング言語なの?w
その訳語が何か理解できてる?
0963デフォルトの名無しさん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を人間が操作しないといけないクソコードになるよ。
そんなのは仕事の出来ないヤツのやることだ。
0964デフォルトの名無しさん2010/04/03(土) 12:54:34
>>952
そのページ見ても、Pythonがスクリプト言語だという記述は見られないけど?

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

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

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

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

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

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

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

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

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

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

なのに、なんで >>949 はいきなり C++ vs Python の話を始めているんだ?
C++ のコンパイル速度が気になる Delphi 使いがQtを使うという前提はどこいった?
0972デフォルトの名無しさん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使いの要求には応えられないって話から始ってるんだが。
0973デフォルトの名無しさん2010/04/03(土) 13:56:33
>>971
>>949は>>938、>>939のやり取りに対応してる。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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