【RAD統合環境】 Qt 総合スレ 7 【Win/Mac/Linux】at TECH
【RAD統合環境】 Qt 総合スレ 7 【Win/Mac/Linux】 - 暇つぶし2ch2:デフォルトの名無しさん
10/04/04 00:44:23
■リンク

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

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

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


■ライセンス関連まとめ

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

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

*: LGPLは動的リンク時

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

3:デフォルトの名無しさん
10/04/04 00:45:04
Windows ユーザー向け Tips

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

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

(1)「Qt SDK for Windows」をインストールすればOK
 URLリンク(qt.nokia.com)

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

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

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

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

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


■Python バインディング

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

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


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

5:デフォルトの名無しさん
10/04/04 02:44:42
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); //環境にあわせる
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); //ソースの文字コードを指定("utf-8"や"Shift-JIS")
の方が無難な気がする

6:デフォルトの名無しさん
10/04/04 04:31:27
スレ立て乙です

7:デフォルトの名無しさん
10/04/04 04:46:17
前スレの>>995

スレをまたいで話題を続けたくはなかったんだが、あまりに酷い誹謗中傷なので書かせてもらう。

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

全く的外れ。難民と化したDelphi使いがそれに近い開発環境を求めた結果、
Qt+Qt Creatoにたどり着いた。機能的にはこれでほぼ文句ないと思っている。
ただ、前スレの>>905はコンパイル時間が気になると言った。
それに対してはプリコンパイルドヘッダーとjomという軽減策がある。

それなのにDelphiを使ったことのない人が、事情もわからずに「コンパイル時間」
の一言を聞いてPyQtを勧めだした。これこそ価値観の押し付けじゃないのか?

8:デフォルトの名無しさん
10/04/04 07:14:56
>>5
QTextCodec::codecForLocale()って必ず"System"ロケールに合わせるみたいだから
MinGW版はソースがutf-8なのにSJISで扱われて困るんじゃないかなー
試しに↓のコードを実行したら、俺の環境だとVCではOKでMinGWだと文字化けしたけど

#include <QtGui>
int main(int argc, char* argv[])
{
  QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); //環境にあわせる
  QString str = "日本語";
  qDebug() << str;
  return 0;
}

9:デフォルトの名無しさん
10/04/04 11:04:00
>>8
そうだね。MinGWだと例のコンパイルオプション付けないと化けるけど、MinGWによっては
そのコンパイルオプション効かないのもあるし、Qt標準のMinGWはまさにそのコンパイル
オプションが効かないヤツ(本家)だから、話がややこしくなる。

QTextCodec::setCodecForTr() の方は、tr()で囲った文字列に有効なんだけど、そのことも
書いてないし。

この辺りは事情が複雑だから、QTextCodecの話は敢えてテンプレートに書かなくても
いいんじゃないのかな。書くのなら、

■WindowsでVCの場合(日本語を含むソースコードはShift_JISで書く)
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Shift_JIS"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("Shift_JIS"));

■WindowsでMinGWの場合(日本語を含むソースコードはUTF-8で書く)
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));

とすべきだと思う。


10:デフォルトの名無しさん
10/04/04 11:41:30
>>9
>■WindowsでVCの場合(日本語を含むソースコードはShift_JISで書く)
>QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Shift_JIS"));
>QTextCodec::setCodecForTr(QTextCodec::codecForName("Shift_JIS"));

日本語環境のVC2005以降なら、UTF-8はSJISに変換されるので、UTF-8で書いてもこれで通ってしまう。

11:デフォルトの名無しさん
10/04/04 12:12:32
>>7
それに対して、IDEの完成度でPyQtを非難していたヤツはまだいいけど、
なぜかPythonを「所詮はスクリプト言語」とか言い出すアホが居ただけの話。

12:デフォルトの名無しさん
10/04/04 12:38:47
>>7
IDEを非難してた方もひどいな
ポトペタ必要→ポトペタあるよ→統合されたIDEが必要→統合されたIDEあるよ→シームレスさが重要
本当に >>905 がそこまで要求していたのかどうかなんて判らないのに、
「Delphi使いならこう思うはず」っていう主張を延々と。

13:デフォルトの名無しさん
10/04/04 12:52:49
>>10
VC2005でBOMなしUTF-8も正しく変換される?
聞いた話だから定かじゃないんだけど、VC2005や2008にUTF-8通すと、時々変な挙動を
するって...

14:デフォルトの名無しさん
10/04/04 12:56:41
>>12
> 「Delphi使いならこう思うはず」っていう主張を延々と。

Delphiの一番の売りはそこだからね。同じDelphi使いとしては正しいと思う。
使ってない人には理解しがたいかもね。

15:デフォルトの名無しさん
10/04/04 14:24:19
>>13
VCがBOMなしUTF-8をSJISに変換して.exeに入れてしまいます。


16:デフォルトの名無しさん
10/04/04 16:54:55
>>8
それは
QString str = QObject::tr("日本語");
で解決するだろ

俺が言いたいのは
#include <QtGui>
int main(int argc, char* argv[])
{
  QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); //環境にあわせる
  QString str = argv[1]; // 添え字チェックはとりあえず無視
  qDebug() << str;
  return 0;
}
の場合に
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));
じゃまずいんじゃないの?っていう話

17:デフォルトの名無しさん
10/04/04 16:59:46
>>14
つまり Delphi 厨の自演だったってことですか

18:デフォルトの名無しさん
10/04/04 17:53:23
>>17
いや、俺はエンバカスレに書き込みがあったので前スレも含めて覗きに来たんだけど。

19:9
10/04/04 18:52:11
>>16
なるほど、そういうことか。理解した。
しかしテンプレに書くにはやはり話がややこしいね。

20:デフォルトの名無しさん
10/04/04 20:23:10
Phononって、Windows, Linux, Macで同じような仕様・挙動で動くって事でいいんですか?
Windowsのややこしいマルチメディア周りのAPIに触れずに。

21:デフォルトの名無しさん
10/04/04 21:23:58
前スレでPyQt勧めた張本人(は規制されてるため代行レス)だが、どうしてこうなった。
>>7
>それなのにDelphiを使ったことのない人が、事情もわからずに「コンパイル時間」
>の一言を聞いてPyQtを勧めだした。これこそ価値観の押し付けじゃないのか?

全くずれている。俺はコンパイル時間という観点での解決法を示しただけだ。それで不満なら、求めてたのと違う、の一言で済む話だ。
なんでそれだけで価値観の押し付けになるのか意味が分からない。
Delphiの事情は知らんが、そもそも事情を知っている必要を感じてなかった。
別環境に流れてくる人が、前と同じものを求めているなんて思わなかったから。
(同じもの求めてるなら、同じ場所に留まっていればいいのだから。昔のVBが好きな人はそうしてるよ)

で、その後、なぜか変に噛みついてきた奴がいて、それに変な応じ方をしたやつがいたせいで明後日の方向にずれた
URLリンク(anond.hatelabo.jp)も見てくれ

22:デフォルトの名無しさん
10/04/04 22:13:01
>>21
なぁんだ。そういうわけだったのか。

> 全くずれている。俺はコンパイル時間という観点での解決法を示しただけだ。
> それで不満なら、求めてたのと違う、の一言で済む話だ。
> なんでそれだけで価値観の押し付けになるのか意味が分からない。

これは前スレの>995の余りに酷いずれた認識と表現に対して売り言葉に買い言葉で
書いた。あなたはもちろん前スレの>>995じゃないよね。
それならあなたに対しては失礼なことをした。すまん。

まぁ、エンバカスレを見てもらえばわかると思うけど、Delphi/C++ Bulderは難民化
しようとしている。新しいWindowsで仕事をするには、バージョンアップする必要が
あるんだが、新しいバージョンは品質が悪くて不可解な現象が沢山起きたり、
ヘルプがメチャクチャだったりで、みんな閉口している。前バージョンで発覚したバグも
一向に直さない。

そんなわけでQt、特にQt Creatorへの関心度が上がってる。Qt CreatorはDelphi/Builderの
RAD環境に近いからだ。

だからDelphi/Builderからの移行の相談があったら、優しく対応してあげて欲しい。

23:デフォルトの名無しさん
10/04/04 22:57:16
>だからDelphi/Builderからの移行の相談があったら、優しく対応してあげて欲しい。
そこまでの寛容さを求めるのなら他の言語を「小物に向いている」などという排他的阿呆はきっちり
批判するべきだね。

24:デフォルトの名無しさん
10/04/04 23:34:34
ID出ないんしどれが誰の意見かさっぱりわかんないっつの
どうしても脊髄反射したいならコテつけてくれNGもしやすいし

25:デフォルトの名無しさん
10/04/04 23:43:22
俺はとにかくひたすらあぼんしまくっているから全然不快じゃないぜ。


26:デフォルトの名無しさん
10/04/05 00:08:19
>>20
Phononはバックエンド(OSのAPIとか)との橋渡し的なライブラリらしい
だから同じソースでOS問わず動くけど、挙動については
例えばWindowsならPCにCodecが入ってないと再生できないとかあるはず

27:デフォルトの名無しさん
10/04/05 02:12:35
>>16
QApplication::arguments()を使えば引数は文字化けしないみたいよ

#include <QtGui>
int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8")); //ソースの文字コードを指定("utf-8"や"Shift-JIS")
  QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); //同上
  QString str = argv[1]; // 添え字チェックはとりあえず無視
  qDebug() << str; //NG
  str = app.arguments()[1];
  qDebug() << str; //OK
  str = QString::fromLocal8Bit(argv[1]);
  qDebug() << str; //OK
  return 0;
}

その他のケースでシステムロケール文字コードとのやり取りが発生する場合は
明示的にQString::fromLocal8Bit()を使うのがいいんじゃないか?

28:デフォルトの名無しさん
10/04/05 03:11:46
>26
あ、そうなんですか。
vlcのサイト見てたらPhononがどうこうって書いてあったんで、
Phonon内部にvlc由来かffmpeg由来の?codecが入ってるのかなと
想像してたんですが。

29:デフォルトの名無しさん
10/04/05 05:02:12
>>28
WikipediaのPhononのページ
* 2008 年4月23日現在、Unix系のシステムでサポートされているバックエンドはxine、GStreamer、VLC、MPlayerである[4]。
* Microsoft WindowsでサポートされているバックエンドはDirectX、VLC、MPlayerである。
* Mac OS XでサポートされているバックエンドはQuicktimeである。

QtのPhononモジュールの場合は、WindowsだとDirectShowを、LinuxだとGStreamerを必ずバックエンドに使う
VLCやMPlayerが使えてもライセンスがGPLだから需要少ないと思ったのかも

30:デフォルトの名無しさん
10/04/05 09:23:15
Windowsで,MainWindowのタイトルバー右上の最小化・最大化・閉じるボタンを消したくて,
MainWindowのコンストラクタの中に,

Qt::WindowFlags curFlags = windowFlags();
Qt::WindowFlags changeFlags = ~(Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint);
curFlags &= changeFlags;
setWindowFlags(curFlags);

って書いてみたら,最大化ボタンと最小化ボタンは消えるけど閉じる(×)ボタンが消えてくれない。
上のchangeFlagsの右辺の | している中に,Qt::WindowSystemMenuHint も加えてみたけどやっぱり
消えない。

どうすれば消せるのでしょうか?

31:デフォルトの名無しさん
10/04/05 09:49:04
>>27
>QApplication::arguments()を使えば引数は文字化けしないみたいよ

うん
それは知ってたけど
argv[1] は C 文字列が「外から」渡される例として書いた
fgets(stdin, ...) でも同じ

>その他のケースでシステムロケール文字コードとのやり取りが発生する場合は
>明示的にQString::fromLocal8Bit()を使うのがいいんじゃないか?

そうだね


32:デフォルトの名無しさん
10/04/05 10:54:29
>>30
Qt::CustomizeWindowHint じゃね?サンプルあるよ
examples\widgets\windowflags


33:30
10/04/05 11:12:58
>>32
その通りだった。うまく行ったよ。サンクス。

34:デフォルトの名無しさん
10/04/06 19:22:55
URLリンク(doc.qt.nokia.com)


35:デフォルトの名無しさん
10/04/07 00:56:46
>>1
> ※正確には通常「LGPL+商用利用向きの例外条項」を選ぶことにな7ります
>(Qtインストール先の「LGPL_EXCEPTION.txt」を参照)。

LGPL_EXCEPTION.txt は「商用利用向きの例外条項」ではないんじゃないかな。
むしろ「テンプレートやインライン関数経由でライセンス汚染されたくない人の為の
例外条項」であって、この例外条項を適用しないと商用利用出来ない訳ではない。

URLリンク(qt.gitorious.org)

> ちなみにGPLでも商用利用が不可能というわけではありません、念のため。

GPL も LGPL も Commercial Developer ライセンスも全て商用利用可能なのに、
不自然に「商用利用」という言葉に拘るから、回りくどい説明になるんだと思われ。

>>1 は何で「商用利用」という単語に拘りたいのかな?
「商用利用」という単語は意味も範囲もかなり曖昧だから危険な言葉だと思うけど。

36:デフォルトの名無しさん
10/04/07 04:42:07
>>35
LGPLのリバースエンジニアリング禁止の禁止条項は、重要な落とし穴。

37:デフォルトの名無しさん
10/04/07 05:45:31
なんで「商用利用」を削除したがるん?
単にテンプレをすっきりさせたいのか
LGPLのQtが商用で普及すると困る立場の人なのか分からんよ
まあ、誰かがまとめWiki作ってくれれば消して構わんと思うけど

38:デフォルトの名無しさん
10/04/07 06:57:41
しかしリバースエンジニアリングの禁止なんて有効性があるのかな。
とりあえず書いてあることが多いけど、出るとこ出りゃ意味なしって感じもする。

39:デフォルトの名無しさん
10/04/07 09:12:52
>>36
だから、むしろそれをきちんと書いた方が良いと思うんだよね

>>37
きちんと正しい情報を書いてあげた方が親切でしょ

40:デフォルトの名無しさん
10/04/07 09:29:21
>>38
日本以外のほとんどの国では意味無いね
明文化されてない日本でも無効であるという説が有力

41:デフォルトの名無しさん
10/04/07 09:40:10
>>40
企業の法務からしたら、EULA にリバースエンジニアリング禁止条項を
入れ辛くなるだけでも嫌な場合もあるんじゃないの。
裁判をやる以前に企業イメージが損なわれるだけでも損失となり得る。

42:デフォルトの名無しさん
10/04/07 09:54:34
>>37
>LGPLのQtが商用で普及すると困る立場の人なのか分からんよ

どのライセンスでも商用利用が可能だと書いたのに、
何でそんな邪推をされるの分からんよ…

そんなに商用利用をアピールしたければ、ライセンスの
話と切り分けて、こんな感じにしたら良いんじゃないの。

『Qt は商用利用が可能です。
ただし、バイナリ保有者にもソースコードを公開したくない場合は LGPL
または Commercial Developer License を、リバースエンジニアリングを
禁止したい、Qt 自身を非公開で改変したい等、LGPL の要求から外れる
場合は Commercial Developer License を選択すると良いでしょう。
ライセンスを選択する前に各ライセンスの条項を必ず確認して下さい。』

43:デフォルトの名無しさん
10/04/07 10:00:07
【License】ライセンス総合【利用許諾】
スレリンク(tech板)

44:デフォルトの名無しさん
10/04/07 10:01:01
相変わらずループしてる

45:デフォルトの名無しさん
10/04/07 10:39:28
どこが?

46:デフォルトの名無しさん
10/04/07 10:41:53
人類

47:デフォルトの名無しさん
10/04/07 11:27:34
>>44
たしかに新スレの恒例となりつつあるw

>>42
次スレの>>1にはそれ入れてこんな感じにしてもらうってことでいいのかな?

■ライセンス
・オープンソース版(Open-source version)
 LGPL 2.1 または GPL 3.0 のうちどちらかを利用者が選べます。
・商用版(Commercial version)
 こっちはNokia社か日本の代理店(SRA社)とライセンス契約(年間30万くらい?)を結んで使います

Qt は商用利用が可能です。
ただし、バイナリ保有者にもソースコードを公開したくない場合は LGPL
または Commercial Developer License を、リバースエンジニアリングを
禁止したい、Qt 自身を非公開で改変したい等、LGPL の要求から外れる
場合は Commercial Developer License を選択すると良いでしょう。
ライセンスを選択する前に各ライセンスの条項を必ず確認して下さい。


48:デフォルトの名無しさん
10/04/07 12:29:13
>>47
それだとまたGPLでも商用利用可能云々とかなりそうなので

Qt は上記のどのライセンスを選択しても商用利用が可能です。

位にしとくのがいいか?


49:デフォルトの名無しさん
10/04/07 15:30:48
>>48
GPLでも商用利用は不可能じゃないよ
ソースコードを要求にしたがって渡す必要があるけど

50:48
10/04/07 16:43:17
>>49
だから俺はそういうツッコミが入るから、どのライセンスでも商用利用可能と言っている。

51:デフォルトの名無しさん
10/04/07 16:46:01
ちょっと言葉が足りなかったな。
「どのライセンスでも商用利用可能」と明記した方がいいと言っている。

52:デフォルトの名無しさん
10/04/07 16:54:40
商業利用不可でライセンスされているものはいろいろある。

53:デフォルトの名無しさん
10/04/07 16:58:20
(あれ?)けれども、Qtは、どれを選んでも、商用可ってことで。

54:デフォルトの名無しさん
10/04/07 17:08:14
だからこういうことでいいんじゃね

■ライセンス
・オープンソース版(Open-source version)
 LGPL 2.1 または GPL 3.0 のうちどちらかを利用者が選べます。
・商用版(Commercial version)
 こっちはNokia社か日本の代理店(SRA社)とライセンス契約(年間30万くらい?)を結んで使います

Qt は上記のどのライセンスを選択しても商用利用が可能です。
ただし、バイナリ保有者にもソースコードを公開したくない場合は LGPL
または Commercial Developer License を、リバースエンジニアリングを
禁止したい、Qt 自身を非公開で改変したい等、LGPL の要求から外れる
場合は Commercial Developer License を選択すると良いでしょう。
ライセンスを選択する前に各ライセンスの条項を必ず確認して下さい。

55:デフォルトの名無しさん
10/04/07 17:52:40
質問したら正確に問題が伝わってなかった上にスレが落ちてたorz。

void MainWindow::on_ColorPicker_clicked()
{
QString value = ui.TextColor->text();
QColor color = QColorDialog::getRgba();
if (color.isValid()) {
ui.TextColor->setText(color.name());
ui.TextColor->setPalette(QPalette(color));
ui.TextColor->setAutoFillBackground(true);
}
return;
}
これは、ColorPickerというオブジェクト名のボタンが押されたときに
カラーピッカーを表示して、TextColorというオブジェクト名のフォームに選択された色を記入するソースだけど
当然、TextColorに対してのColorPickerしか作用しないソースになってしまう。

そこで、このColorPickerとTextColorを変数として外に出したいけど、どうしたらいいのかな?

56:デフォルトの名無しさん
10/04/07 18:10:49
ライセンスキー付きのアプリケーションを商用で出そうとすると、

GPL は、ソースコードを出さなければならないのでライセンスキーでガードできない。ソースコードの再配布もできる。
LGPL は、リバースエンジニアリングして、ライセンスキーを作り出したり、暗号化されているデータを復元ができる。
商用版は、前述のようなことを禁じるようにライセンスで縛れる。

57:デフォルトの名無しさん
10/04/07 18:53:03
>>56
> LGPL は、リバースエンジニアリングして、ライセンスキーを作り出したり、暗号化されているデータを復元ができる。
公開鍵暗号を使えば、作者しか知らない秘密鍵がバレない限り
ライセンスキーを作り出すことが不可能なのでは?

58:デフォルトの名無しさん
10/04/07 19:08:25
>>57
そういうことをしているということをリバースエンジニアリングして、そこをよけるようなバイナリパッチを作れる。

59:デフォルトの名無しさん
10/04/07 19:11:55
この辺は荒れるしスレ違いだからやめとこうぜ

60:デフォルトの名無しさん
10/04/07 19:29:44
>>58
できるかどうかに拘らず、調べることすらを法的に禁止しなければならないような組織には、
LGPLは向かないと言うことだ。

61:デフォルトの名無しさん
10/04/07 19:38:03
自分は >>47 でも >>54 でも良いよ。
もしこの後も異論が出なければ、次スレを立てる人はこれで立てて下さい。

62:デフォルトの名無しさん
10/04/07 19:52:55
一年後くらいかな

63:デフォルトの名無しさん
10/04/07 20:03:40
前スレは大体2ヶ月くらいで使い終わったみたいよ

64:デフォルトの名無しさん
10/04/07 20:47:04
>58
一応確認だけど、認証部分をよけるようなバイナリパッチを作るのはLGPLでも違法だよね?

65:デフォルトの名無しさん
10/04/07 21:16:17
>>64
リバースエンジニアリングが許されるので、その過程の検証のために副産物として
できてしまうのは違法とは言えない。ただし、それを他に伝えたり、伝わってしま
ったり、何かに使おうとしたりするのは別判断になる。


66:デフォルトの名無しさん
10/04/07 21:49:45
勝手な法解釈だなぁ

67:デフォルトの名無しさん
10/04/07 21:55:52
こいつらにとっては、シリアル入力必要ないものは、ライセンス取らなくても使い放題なんだろ。

68:デフォルトの名無しさん
10/04/07 21:55:56
>>65
違法とは言えない
わけねーだろ。
リバースエンジニアリングを許可するのと改変を許可するのとは全然違う。

69:デフォルトの名無しさん
10/04/07 22:15:42
リバースエンジニアリングを禁止して隠蔽しとけば安心みたいな考えが一番危い。
欧米中国はそんな文言があっても、リバースエンジニアリングしてクローン商品を作ることは法的に認められてる。
もちろんコードをコピーしたとか特許に触れたとか別の違法行為が無ければの話だが。

70:デフォルトの名無しさん
10/04/07 22:23:35
脱線して来たな

71:デフォルトの名無しさん
10/04/07 22:27:49
>>67
そんなこと言ってないじゃないか。使うのは別のことだと書いてある。
>>68
改変をしてよいとも言ってない。

72:デフォルトの名無しさん
10/04/07 22:31:19
商用で使わせていただくんだったら、ライセンス料ぐらい払えとは思う。

73:デフォルトの名無しさん
10/04/07 22:58:38
>>71
バイナリパッチが違法と言えないと言っているわけだsが

74:デフォルトの名無しさん
10/04/07 23:00:00
>>69
> 欧米中国はそんな文言があっても、

中国は「どんな文言があっても」の間違いだろwwww

75:デフォルトの名無しさん
10/04/07 23:15:57
中国の新著作権法自体にそれほど不備があるとは思えないな
その運用・執行について別問題

76:デフォルトの名無しさん
10/04/07 23:25:36
>>72
ライセンス料を気にせず自由に使って欲しいからオープンソースにしてるんだろ
俺はその心を大事にしたいと思う

77:デフォルトの名無しさん
10/04/07 23:38:53
以前LGPLを使う人のことを乞食呼ばわりしてるヤツがいたな。
NOKIAはQtで儲ける必要なんかないんだから、LGPLをありがたく使わせてもらえば
いいのに。商用ライセンスだけじゃ品質向上がなかなか進まないからGPL/LGPLを
用意してユーザーを増やしてるようだ。

商用ライセンスは、どうしてもLGPLでは困るケース...パッケージソフトを
開発して販売する場合とか...のためにあると思われ。


78:デフォルトの名無しさん
10/04/08 00:11:43
スレ違いなんで他でやってください。

79:デフォルトの名無しさん
10/04/08 00:26:12
リバースエンジニアリング禁止条項なんて、大して意味ないだろ
人気ソフトなら必ずだれかがやってる

80:デフォルトの名無しさん
10/04/08 00:33:09
>>78
こういう話は止めろと言っても終わらないよ
スレ本来の話題を提供するか、面白いコードを投下するか、
そうでなければ自然に話が終わるのを待つしかない

81:デフォルトの名無しさん
10/04/08 06:09:27
っつーか
基地外が自演してるだけにしか見えない

82:デフォルトの名無しさん
10/04/08 07:43:12
Qt CreatorのGUIデザイナの良いチュートリアル無いかな
個人的には↓がすごい参考になったが物足りん
URLリンク(thesmithfam.org)

83:デフォルトの名無しさん
10/04/08 09:16:56
つ 「Qt プログラミング入門」

84:デフォルトの名無しさん
10/04/08 13:27:49
この話題つぶしっ

85:デフォルトの名無しさん
10/04/08 13:50:44
URLリンク(www.cutt.co.jp)
これ古い?

86:デフォルトの名無しさん
10/04/08 13:58:09
URLリンク(www.sra.co.jp)


87:デフォルトの名無しさん
10/04/08 14:08:29
個人的には↓がすごい参考になった
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)

URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)

88:デフォルトの名無しさん
10/04/08 14:13:35
QtCreator: Defining your own custom slots.
URLリンク(www.youtube.com)

QtCreator tutorial (1): How to make a very basic program.
URLリンク(www.youtube.com)

89:デフォルトの名無しさん
10/04/08 16:10:36
>>85
URLリンク(www.amazon.co.jp)

VSアドオンが前提の本。

90:デフォルトの名無しさん
10/04/09 00:07:48
>>77
symbianの開発者が増えたら御の字だもんな

91:デフォルトの名無しさん
10/04/09 08:32:41
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!


92:デフォルトの名無しさん
10/04/09 14:24:40
>>87-88
ありがとうございました

93:デフォルトの名無しさん
10/04/09 19:32:28
どういたしまして

94:デフォルトの名無しさん
10/04/09 19:38:29
PyQt のプログラミングについてはここで質問しても良いですか?
python スレの方が良いですか?

95:デフォルトの名無しさん
10/04/09 22:13:32
sjisのテキストを読みたいんだけど、
うまく読み込めない
教えてエロい人!!

QFile file("test.txt");
QTextStream in(&file);
QTextStream out(stdout);

file.open(QIODevice::ReadOnly);
out << in.readAll();
file.close();

96:デフォルトの名無しさん
10/04/09 22:23:50
QTextCodec::setCodec()

97:デフォルトの名無しさん
10/04/09 22:28:47
つ 「Qt プログラミング入門」


98:デフォルトの名無しさん
10/04/09 22:30:10
   ▁▁▁▁  ▁▁▁▁  ▁▁▁▁  ▁▁▁▁
  ╱╲   ╲╱╲   ╲╱╲   ╲╱╲   ╲
 ╱  ╲▁▁▁╲ ╲▁▁▁╲ ╲▁▁▁╲ ╲▁▁▁╲
 ╲  ╱ ▁▁╱ ╱   ╱ ╱ ▁▁╱ ╱   ╱
  ╲╱▁╱╲ ╲╱▁▁▁╱╲╱▁╱╲ ╲╱ ▁▁╱
   ▔╱  ╲▁▁▁╲   ▔╱  ╲ ▔▔╲
    ╲  ╱ ▁▁╱   ▁╲  ╱▔▔▔╱
     ╲╱▁╱╲ ▔▔╲╱╲▔╲╱ ▁▁╱
      ▔╱  ╲▁▁▁╲ ╲ ▔▔╲
       ╲  ╱ ▁▁╱ ╱▔▔▔╱
        ╲╱▁╱╲ ╲╱ ▁▁╱
         ▔╱  ╲ ▔▔╲
          ╲  ╱▔▔▔╱
           ╲╱   ╱
            ▔▔▔▔


99:95
10/04/09 22:32:09
>>96
ダメぽ

int main() {
QFile file("/home/redhat98/subject.txt");
QTextStream in(&file);
QTextStream out(stdout);
in.setCodec(QTextCodec::codecForName("Shift-JIS"));

file.open(QIODevice::ReadOnly);
out << in.readAll();
file.close();

return 0;}

100:デフォルトの名無しさん
10/04/09 22:32:43
    ヘ⌒ヽフ
   ( ・ω・) ㌧㌧
   / ~つと)


101:デフォルトの名無しさん
10/04/09 23:22:23
>>99
最初に QCoreApplication app(argc, argv); を入れると改善したりしない?

102:95
10/04/09 23:27:51
>>101
ちゃんと表示されました
ありがとうございました

103:デフォルトの名無しさん
10/04/10 01:14:17
>>94
質問内容がQt寄りかpython寄りかを判断して決めてくれ。
こないだpythonの話題でこのスレ荒れたばっかなので、それでも迷ったらpythonスレの方で頼む。

104:デフォルトの名無しさん
10/04/10 01:32:13
windowsクラッックに設定するとQtにも反映されるの?

URLリンク(www.dotup.org)
左:サンプルの見本、右:自分の環境でコンパイル&実行

Qtの内部ではwin32使ってるのか?

105:デフォルトの名無しさん
10/04/10 01:52:00
>>104
される。
普段はAero環境でそれになじんだ表示がされているが、
XPからリモートデスクトップで入ってクラシック表示になると同じQtで作ったプログラムがクラシック表示になってたし。
XPにバイナリごと持っていったらXPになじんだ表示になってた。

106:デフォルトの名無しさん
10/04/10 11:05:02
.Netスタイルのメニュー表示できないの?

URLリンク(www.dotup.org)
左:.Net 右:Qt

107:デフォルトの名無しさん
10/04/10 11:24:58
出来ますがなにか?

つ 「Qt プログラミング入門」

108:デフォルトの名無しさん
10/04/10 11:29:38
>>106
無知乙

109:デフォルトの名無しさん
10/04/10 11:49:33
>>106
勝手にデフォルト環境になじんだ設定になるっての。
とりあえずインストールして動かしてみろ。
すぐに分かる話だ。

110:106
10/04/10 12:20:04
>>109
何をインストールするんだ?

QMenuでicon指定するとtitleが表示されないのだが、iconとtitle両方表示するにはどうすればおk?
URLリンク(www.dotup.org)

111:デフォルトの名無しさん
10/04/10 12:25:19
ツールバーじゃね?

112:デフォルトの名無しさん
10/04/10 14:50:57
チャートコントロールって何を使ってますか?

113:デフォルトの名無しさん
10/04/11 12:08:54
>>110
URLリンク(doc.trolltech.com)

114:デフォルトの名無しさん
10/04/11 18:40:39
QFileDialog::getSaveFileNameで、事前にファイル名をプリセットすることは
できますか?
上書き保存の場合


115:デフォルトの名無しさん
10/04/11 18:47:21
URLリンク(doc.trolltech.com)

116:デフォルトの名無しさん
10/04/11 21:24:07
Qtは読み書きできる画像ファイルのフォーマットとしてTIFFには対応しているようだけど、
マルチページTIFFは扱えないの?


117:デフォルトの名無しさん
10/04/11 22:23:20
PyQtでPIL

118:116
10/04/11 22:58:06
>>117
サンクス。ただ、今回はC++で書かれた膨大に蓄積されたソース資産を利用するので、
残念ながらPythonは使えないんだ。

119:デフォルトの名無しさん
10/04/12 13:05:50
libtiff使えば自前サポートもそれほど手間じゃなかろ

120:デフォルトの名無しさん
10/04/12 13:12:48
ありがとうございました

121:116
10/04/12 15:15:56
>>119
やっぱりそれしかないか。サンクス。
何か尋ねた本人でもないのに「ありがとうございました」いうヤツが出没してるな。

122:デフォルトの名無しさん
10/04/12 15:58:40
ありがとうございました

123:デフォルトの名無しさん
10/04/12 21:03:47
pushButtonにフォーカスを移動した状態で、Enterキーを押した場合の
SLOTって作れるの?


124:デフォルトの名無しさん
10/04/13 08:45:30
Apple ジョブズ氏「クロスプラットフォーム開発環境は劣化アプリ量産と技術進展を阻害」
URLリンク(journal.mycom.co.jp)
これはiPhoneの話。
でもこのぶんじゃQtがMacから排除されるのも時間の問題だな。

125:デフォルトの名無しさん
10/04/13 10:04:30
Qt Creatorで、Newってやって、Qt Designer Formを選んで実行しました。

そうしたところ、~.uiファイルしか出来ませんが、これって何なん?

.uiファイルだけじゃなくて、.h/.cppも一緒に作って欲しいに決まってるじゃね?

126:デフォルトの名無しさん
10/04/13 10:17:21
そうだね

127:125
10/04/13 10:24:46
いやだから、皆はどうやってんの?

Newってやって、Qt Designer Formを選んだのが間違い?

.uiファイルから.h/.cppを生成するメニューがある?

128:デフォルトの名無しさん
10/04/13 10:35:26
Qt デザイナーフォームクラス

129:125
10/04/13 10:45:53


あっという間にデキマスタw

これでダイアログ作りまくりwww

130:デフォルトの名無しさん
10/04/13 14:39:17
ダイアログのButton BoxにSLOT付けようとすると、

>No Documents matching 'ui_Dlg.h' could be found.
>Rebuilding the project might help

みたいなエラーが出ますが、何でしょう?

131:130
10/04/13 14:55:49
ダイアログ一式作り直したらエラーが消えたので、本当にバージョンミスマッチでした。解決しました。


再作成しなおしたダイアログでSLOT作ってコンパイルすると、今度は、
>Dlg.h:24: error: `QAbstractButton' has not been declared
なんですが、何ででつか?

132:デフォルトの名無しさん
10/04/13 15:09:58
>>131
QAbstractButton' has not been declared

133:130
10/04/13 15:38:59
対処方法教えて下さい(><)

134:デフォルトの名無しさん
10/04/13 15:42:08
declare QAbstractButton

135:130
10/04/13 15:54:25
>#include <QtGui/QAbstractButton>
を足して、
slotの実体書いたらコンパイル通りマスタ。

136:デフォルトの名無しさん
10/04/14 22:06:46
    ヘ⌒ヽフ
   ( ・ω・) ㌧㌧
   / ~つと)


137:デフォルトの名無しさん
10/04/14 23:20:42
>>123
signalじゃなくslot?

signalならclickedが出ると思うんだけど、普通のクリックと区別したいってことなら、
QPushButtonを継承して、keyEventをオーバーライドするか、
QObject継承してるクラス(親ウィジェットでしか使う予定ないなら、親ウィジェットでもいいよ)で
eventFilter実装して、そのクラスからのsignalにする手もある。

138:123
10/04/15 18:11:25
>>137
すいません、signalでした。lineEditなどには、returnPressedシグナルが
ありますが、pushButtonでも同じことができるとENTERキーだけで進めるかと
思ったもので、
keyEvent内でENTERキーを捕まえて、シグナルを発行すればいいんですね。
ありがとう やってみます

139:デフォルトの名無しさん
10/04/15 18:13:42
signal / slot ってプリコンパイルで標準C++に展開されるんですよね?
どのように展開されるのか説明キボン

140:デフォルトの名無しさん
10/04/15 18:34:28
qt creatorで仕事とか大きなプログラム作っている人いる?

141:デフォルトの名無しさん
10/04/15 19:14:13
>>139
debug
release
どっちかのフォルダに
moc_hogehoge.cpp
とか出来てるはず

142:デフォルトの名無しさん
10/04/15 19:44:30
質問です。
Vista 64とxpにQt 4.6.2、mingwを入れて使っています。
両者で同じプロジェクトをビルドするとき、xpでリリースビルドをqtcreaterからビルドした時だけ
qmakeが何か例外を出して止まってしまいます><
msysやcmdのコマンドラインからだとちゃんとビルドできるのですが・・・
ライブラリとCreaterをバラで入れたりSDK丸ごとに入れ替えたり色々やっても変わんないし・・・
xpだとおかしくなったりします?

まあ、コマンドラインからビルドできるから問題ないっちゃ問題ないんですが何か気持ち悪い・・・

143:デフォルトの名無しさん
10/04/15 19:48:16

その例外のメッセージを貼ろうとは思わないのかね

144:デフォルトの名無しさん
10/04/15 20:06:33
確かに貼った方が良いですね。
でも

問題が発生したため、qmake.exeを終了します。ご不便をおかけして申し訳ありません。

というMSへの通報ダイアログなんで情報量が皆無・・・
プロセスの戻り値は-1073741819 (要はゴミ値)。

145:デフォルトの名無しさん
10/04/15 20:17:46
FFFFFFFFC0000005

ゴミには見えない

146:デフォルトの名無しさん
10/04/15 20:24:15
色眼鏡で見ている人には見えない

147:デフォルトの名無しさん
10/04/15 21:42:06
QCoreApplication app(argc, argv);
app.exec();←これが無くてもちゃんと動く
何でですか?

148:デフォルトの名無しさん
10/04/15 22:18:06
意弁当投げてないから

149:デフォルトの名無しさん
10/04/15 22:23:55
フォルダ内をファイル名をfailname*.*とかでサーチして正確なファイル名を
得るのに便利なクラスってありませんか?


150:デフォルトの名無しさん
10/04/15 22:27:12
javaだとArrayListにStringを格納する事ができますが、
QStringは何に格納すればいいんですか?

151:デフォルトの名無しさん
10/04/15 22:30:29
QList
QStringList

152:デフォルトの名無しさん
10/04/15 22:31:31
>>148
txt

153:デフォルトの名無しさん
10/04/15 22:35:08
>>150
 ok

154:デフォルトの名無しさん
10/04/15 22:35:51
>>149
性器表現

155:デフォルトの名無しさん
10/04/16 10:18:20
>>147
ヘルプを読め
Generally, no user interaction can take place before calling exec().
As a special case, modal widgets like QMessageBox can be used before calling exec(), because modal widgets call exec() to start a local event loop.

156:142
10/04/16 11:12:50
もう原因追究に疲れたのでwindows SDKとvs用Qtライブラリにしちゃった。
問題なく動くようになったしこれでいいや。

157:デフォルトの名無しさん
10/04/16 11:31:42
>>142
.pro の config をいじったら直ったかもなぁ

158:デフォルトの名無しさん
10/04/16 11:43:46
>>157
いや、もうその辺は結構いじったので。
そもそもコマンドラインやvistaじゃ動くのでかなりお手上げ。

159:デフォルトの名無しさん
10/04/16 18:00:58
>Qt フォルダ選択ダイアログ

でググったら、ファイル選択ダイアログが出てきた。
フォルダ選択ダイアログは無いんでつか?

160:デフォルトの名無しさん
10/04/16 18:15:42
公式のサンプルくらい見てから使うライブラリ決めろよ

161:デフォルトの名無しさん
10/04/16 18:30:45
あるよ。

162:sage
10/04/16 19:38:32
質問です。
Qt creator って、クラスを継承すると親クラスのメンバは補完してくれなくなりますか?

class my_reader : public ifstream
{...}

としたら、
my_reader->
の時ifstreamのメンバが補完されなってしまい、不便で。

OSは ubuntu 9.10 です。

163:デフォルトの名無しさん
10/04/16 20:56:36
my_reader-> としたときに、クラスmy_readerのメンバのみを補完候補に上げたいというなら無理じゃない?

164:デフォルトの名無しさん
10/04/16 21:03:22
インテリセンスでよく使うメンバだけを表示するにはどうしたらいい?

165:デフォルトの名無しさん
10/04/16 21:15:33
自作

166:162
10/04/16 21:19:10
>>163
失礼。
typoです。
ifstreamのメンバも補完候補に挙がって欲しいのですが、現状、my_reader固有のメンバしか補完候補に挙がってこないのです。

167:デフォルトの名無しさん
10/04/16 21:55:42
qtextstreamを使う前に、qfileでopenとしないと
テキストを読み込めないのですか?

168:デフォルトの名無しさん
10/04/16 22:56:08
yes

169:デフォルトの名無しさん
10/04/17 01:31:08
さーせん
Qtライブラリをwindows sdk x64でビルドしたら64bitバイナリが作れるようになったのはいいのですが、デバッグできません(64bit, 32bitどっちのデバッガも試してみたんでけどね)。
やっぱ、Qt Creatorも64bitでビルドしないとだめっすかね。

170:デフォルトの名無しさん
10/04/17 03:25:07
>>166
ifstreamはテンプレートクラスなので、それでは継承できないのでは?
URLリンク(www.unkar.org) の23~25あたり。

MyClass::test内でstd::basic_ifstreamを継承しcloseを呼び出す例。

template <typename CH>
class MyClass : public std::basic_ifstream<CH>
{
public:
void test(){
this->close();
}
};



171:149
10/04/17 10:41:37
VisualC++では、ディレクトリ内のファイル検索にFindFileFirst関数がありますが
同じ様な Qt関数はないですか

172:デフォルトの名無しさん
10/04/17 11:06:51
qtcreatorで開発しているんだけど、
なんで*.proにQT += webkitと書かないとコンパイルに失敗するの?

173:デフォルトの名無しさん
10/04/17 11:14:56
>>172
お前がwebkit使ってるから

174:デフォルトの名無しさん
10/04/17 11:27:47
>>171
QDir::entryList()
聞く前に自分でヘルプもっと探せないと、Qtやってくのつらいと思うよ。


175:172
10/04/17 11:29:08
>>173
そんくらい見りゃわかるよ
なんで、#includeだけじゃダメなのかってこと

176:174
10/04/17 11:38:34
>>171
補足。

> VisualC++では、ディレクトリ内のファイル検索にFindFileFirst関数がありますが

FindFirstFileでしょ?
WIN32 APIだから、WindowsならVisual C++じゃなくても使える。
windows.hをインクルードして、kernel32.libをリンクするように.proファイルに書けば、
Qtからだって使えるよ。コンパイラはMinGWでもOK。もちろんVC++のコンパイラ
(MS SDKを含む)でQtを使う場合もOK。

Linuxとか別のプラットフォームなら>>174に書いた方法でやらなきゃダメだけど。

177:デフォルトの名無しさん
10/04/17 11:48:06
>>170:
をを!そんな技が必要だとは。
ありがとうございます。試してみます。

178:デフォルトの名無しさん
10/04/17 11:53:54
>>175
そういう決まりなんだから、素直に従うしかないじゃん。

つ qmake Variable Reference の QT の項

予想としては、コンパイルエラーじゃなくてリンカーエラーなんじゃないの?
必要なインポートライブラリがリンクされないからだと思われ。

179:デフォルトの名無しさん
10/04/17 12:38:39
>>175
ヘッダには関数やらクラスの宣言だけが書いてあって、実態は別のところにある。
includeだけじゃ、宣言だけで中身の無い鳩山状態。

180:デフォルトの名無しさん
10/04/17 12:54:15
>>175
URLリンク(doc.trolltech.com)

181:デフォルトの名無しさん
10/04/17 13:16:02
Qt Creatorで日本語のコメント書いてると文字削除した時にカーソル消えることがあるんですけど
一度消えたらQt Creator再起動するしかない?

182:171
10/04/17 13:21:18
>>174
ありがとうございます


183:デフォルトの名無しさん
10/04/17 14:36:13
>>175
VC だって #pragma hogehoge 書くか makefile にリンカオプションつけるだろ
それといっしょ

184:デフォルトの名無しさん
10/04/17 15:01:58
getOpenDialogのselectFilterって、特定の拡張子を除外することはできる?
All Files(*.*)だけど、*.abcだけは除外するとか


185:デフォルトの名無しさん
10/04/17 15:44:34
>>184
QFileDialog::getOpenFileName()のことだよね?
glob形式のパターンマッチング「~以外」を表現できないから、無理なんじゃないか?

186:デフォルトの名無しさん
10/04/17 15:51:10
↑脱字スマソ

× glob形式のパターンマッチング「~以外」
○ glob形式のパターンマッチングは「~以外」

187:デフォルトの名無しさん
10/04/17 16:06:21
なんか FindFileFirst とか getOpenDialog とか selectFilter とか、
語句を平気で間違ったまま書くやつがいるな。

こういう手合いが一番タチ悪い教えて君になりやすい希ガス。

188:175
10/04/17 16:07:13
何でつけなきゃならないのか、わからないけど
結局はおまじないなんだな

感謝する

189:デフォルトの名無しさん
10/04/17 16:10:42
>>178>>179にちゃんと答えがあるじゃん

190:デフォルトの名無しさん
10/04/17 16:35:48
お前らがqtで2ちゃんねるブラウザを作るとしたら、
スレビュー(スレを表示する所)をどう作る?

191:デフォルトの名無しさん
10/04/17 16:44:21
QWebView

192:デフォルトの名無しさん
10/04/17 16:58:32
>>188
プログラムにおまじないなんかねぇょ

193:デフォルトの名無しさん
10/04/17 17:01:17
>>190

レス逆参照してtree表示

194:デフォルトの名無しさん
10/04/17 17:03:46
実質スレ表示にWebの機能なんていらないんだよな

195:デフォルトの名無しさん
10/04/17 17:06:29
QWebView使わなくてもQTextEditかQTextBrowserで十分じゃないかな?

196:190
10/04/17 17:07:32
>>191
俺もQWebViewを使おうかなと思ったけど、
使い方がわかんね

>>193
kwsk

197:デフォルトの名無しさん
10/04/17 17:57:40
>>196
>>193が言ってるのは恐らくJane Styleでいう「検索」→「スレのツリー形式表示」
なんか面白そうだけど、安価つけないやつも多いからな

198:デフォルトの名無しさん
10/04/17 17:58:03
たとえば
>>191 を表示したときに >>196 がレスしてることがわかるようにする機能

199:デフォルトの名無しさん
10/04/17 17:59:55
安価つけなかったり番号間違ったり誤爆ったり
完全にツリーにするのは難しいだろうけど
あきらかにレスがあるのがわかると便利かな
ツリーじゃなくてもいいよ

200:デフォルトの名無しさん
10/04/17 18:44:52
>>195
URLリンク(d.tnose.net)

datの差分をレンダリングするとき遅すぎて使えない
4.6のQWebViewについてくるDOMで実用レベルらしい

201:デフォルトの名無しさん
10/04/17 21:22:16
>>196
>使い方がわかんね
URLリンク(doc.trolltech.com)
URLリンク(doc.trolltech.com)
読めば分かる。

202:デフォルトの名無しさん
10/04/17 21:24:31
>>196
>使い方がわかんね
URLリンク(doc.trolltech.com)
URLリンク(doc.trolltech.com)
読めば分かる。

203:デフォルトの名無しさん
10/04/17 21:59:10
loopyに2回も同じこと言われんでも分かる

204:デフォルトの名無しさん
10/04/18 10:10:36
>>188
>何でつけなきゃならないのか、わからないけど
>結局はおまじないなんだな
URLリンク(doc.trolltech.com)
読めば分かる。



205:デフォルトの名無しさん
10/04/18 22:27:31
どうすれば、foreachが使えるようになるの?

206:デフォルトの名無しさん
10/04/18 23:57:23
PowerPCにLeopardのmacがあったんで、xcode3.1とqt4.6.2を
インストールしてサンプルとか簡単なソースをビルドしてみたが、
「プログラムを開始できませんでした。パスかパーミッションに誤りはありませんか?」
と出てしまう。

んで、そのテストのプログラムを直接動かそうとすると、
ターミナルが起動して英文でいろいろと出た後に
"Bad CPU type in executable"って書いてあるんだけど
PowerPCでは使えない?

207:デフォルトの名無しさん
10/04/19 00:21:23
>>462
Qt をどうやってインストールした?
PowerPC もサポートしているようだけど、
ビルド方法によってはバイナリに含まれてないかも。
URLリンク(doc.trolltech.com)

208:デフォルトの名無しさん
10/04/19 00:22:14
× >>462
>>206

209:デフォルトの名無しさん
10/04/19 00:40:16
>>207
たしかに対応してるみたいだね。サンクス。

特に何も考えずにqt-sdk-mac-opensource-2010.02.dmgを
ダウンロードして実行してインストールしただけなんだけど。
Xcodeの方が最新版は使えないから一つ前のを探して
xcode314_2809_developerdvd.dmgってのをインストールした。

う~ん、よくわからん。

210:デフォルトの名無しさん
10/04/19 13:26:37
>>209
SDK に PPC のバイナリが入ってない可能性があるかも。
ターミナルから file コマンドで qmake とか調べてみたら。

211:デフォルトの名無しさん
10/04/19 13:40:02
>>209
qmake -spec macx-xcode でプロジェクトを作り直してみる

212:デフォルトの名無しさん
10/04/19 17:37:01
QThreadの使い方が良くわかりません
なにか参考になるサイトとかありませんか?

213:デフォルトの名無しさん
10/04/19 18:05:35
"入門 Qt4プログラミング" で一応スレッドの例があるよ。

214:デフォルトの名無しさん
10/04/19 18:17:43
>>205
>どうすれば、foreachが使えるようになるの?
インストールしただけで URLリンク(doc.trolltech.com)
書かれていることが使えるようになります。


215:デフォルトの名無しさん
10/04/19 18:19:29
QNetworkAccessManager を使って
QNetworkRequest で get するとしばらくしてから
SLOT fin に戻ってくるようなのですが
(その間メインウィンドウの方では他の操作が可能です)
これはマルチスレッドの処理が元々 QNetworkAccessManager に実装
されているということでしょうか?
もしそうなら QThread は使わなくても済みそうなのですが・・・

216:デフォルトの名無しさん
10/04/19 18:20:17
>>212
>QThreadの使い方が良くわかりません
URLリンク(doc.trolltech.com)
URLリンク(doc.trolltech.com)
URLリンク(doc.trolltech.com)
スレッドを知っていれば、これらを読めば分かります。

217:デフォルトの名無しさん
10/04/19 18:22:00
>>216
ありがとうございます
助かります

218:デフォルトの名無しさん
10/04/19 18:29:15
>>215
>これはマルチスレッドの処理が元々 QNetworkAccessManager に実装
>されているということでしょうか?
マルチスレッドは使っていませんが、マルチスレッドは考慮されています。
>もしそうなら QThread は使わなくても済みそうなのですが・・・
QThreadを使うか使わないかは、スロットでの処理次第です。

219:デフォルトの名無しさん
10/04/19 18:34:53
>>218
あほなんでよくわかりません
もうすこし噛み砕いて説明して頂けないでしょうか

220:デフォルトの名無しさん
10/04/19 18:48:40
>>219
もしかしてこういうことができればいいのかな?

QNetworkReply *reply = manager->get(QNetworkRequest(QUrl("URLリンク(www.hogehoge.com)")));
while(!reply->isFinished()) QCoreApplication::processEvents();
qDebug() << reply->readAll();
reply->deleteLater();

221:デフォルトの名無しさん
10/04/19 19:20:49
それは変です

222:デフォルトの名無しさん
10/04/19 19:56:11
>>215
>これはマルチスレッドの処理が元々 QNetworkAccessManager に実装
>されているということでしょうか?
そうです。別スレッドで処理するのでブロッキングしません
分かると思うけどslot finを呼び出すスレッドはメインスレッドではないので注意

223:デフォルトの名無しさん
10/04/19 20:05:00
>>220 >>222
ありがとうございます
なんとなくモヤモヤ感が残ってるのですが
今のところ期待した動きになってきたので
とりあえずなんとかなりそうです
また詰まると思うのでそのときにもう少し
詳しく調べたいと思います

224:デフォルトの名無しさん
10/04/19 20:13:28
>>222
QNetworkAccessManager は別スレッド作って処理してないぞ。


225:222
10/04/19 20:15:01
>>224
あ、そうなん?
↓見て書いただけで試してない申し訳ない
URLリンク(stackoverflow.com)

226:デフォルトの名無しさん
10/04/19 21:18:20
あっちはあっちであほがあほにレスしてるんかな

227:デフォルトの名無しさん
10/04/19 21:36:27
qtextstream out(stdout); out << "test";
どうやったら、改行できるの?

228:デフォルトの名無しさん
10/04/19 22:10:22
>>227
っ endl

229:デフォルトの名無しさん
10/04/19 22:43:58
>>228
thx

230:デフォルトの名無しさん
10/04/19 22:50:15
QFile file("test.txt");
QTextStream in(&file);

QLinkedList<QString> list;
if(file.open(QIODevice::ReadOnly)) {
while(!in.atEnd()) {
list.append(in.readLine());
}
file.close();
}

QTextStream out(stdout);
foreach(QString s, list) {
out << s;
}
なんで、コンパイルエラー&うまく表示されないの?

231:デフォルトの名無しさん
10/04/19 22:57:53
out << qPrintable(s);

hoge.pro の方に
CONFIG += console

232:デフォルトの名無しさん
10/04/20 14:16:59
QSqlDatabase で SQLite を使ってるのですが
50文字 3column 程度で 500件の insert が 1 分くらい掛かってしまいます
QDataStream(QFile) だと一瞬で終わります
もちろんただのテキスト出力より遅いのは理解していますが
こんなに遅いものなのでしょうか?



233:デフォルトの名無しさん
10/04/20 14:18:51
>>232
補足情報です
db.open と db.close は最初と最後の一回だけです
commit も最後の一回だけです
(毎回 commit してもそんなに変わらず遅かったですが)

234:デフォルトの名無しさん
10/04/20 17:23:08
>>232
>こんなに遅いものなのでしょうか?
まずは、SQLiteを直に使って試してみることだ。

235:デフォルトの名無しさん
10/04/20 17:44:00
それらのqtの標準ライブラリがターゲットとしているRDBはODBC経由のみでつか?
Firebirdはやっぱ無理?

236:デフォルトの名無しさん
10/04/20 17:50:56
InterBase(firebird)用のplugin(qt4-ibase-plugin)があると思うけど

237:デフォルトの名無しさん
10/04/20 17:59:09
え”、そんなモノまであったとは(驚

238:デフォルトの名無しさん
10/04/20 18:21:36
>>235
>それらのqtの標準ライブラリがターゲットとしているRDBはODBC経由のみでつか?
URLリンク(doc.trolltech.com)
訊く前に、リファレンスを調べる。

239:デフォルトの名無しさん
10/04/20 20:44:00
>>234
そうですね
とりあえず python で同じくらいのデータ量でやってみました
ある意味予想通りですが一瞬で終わりました
インタプリタより遅いってありえなさすです

あとで Qt4 版で再現するソース晒すつもりです
他に原因があるかも知れないので出来るだけ単純なので試してまた来ます

240:デフォルトの名無しさん
10/04/20 20:55:39
Qtでカスタムウィジェットを作って、Qt Designerでそのウィジェットを使うと、
コンパイル時にそのウィジェットのヘッダファイルを入れないといけないし、
実行時にそのウィジェットのDLLを参照する必要があるけど、
もう少し簡単にカスタムウィジェットをQt Designer使えるようにならないかな?
dllを使わずスタティックリンクにできるだけでもいいんだけど・・・

241:デフォルトの名無しさん
10/04/20 21:00:10
>>239
Qt も QSqlDatabase も知らんけど、SQLite は明示的にトランザクションを開始しないと
勝手に毎回 COMMIT するよ。DB 使いには結構有名な話だから知ってるかもしれないけど。

URLリンク(journal.mycom.co.jp)

QSqlDatabase::transaction () を入れて計ってみても変わらないかな?

242:デフォルトの名無しさん
10/04/20 21:13:11
とりあえず余計な部分を除いた再現するコードです
やっぱり遅いです(1秒以内で終わることを期待しています)
(Windows Vista / Core2Duo 2GHz / メモリ 3GB / HDDはローカル)
QString s(...); を作っているのは実際のプログラムでその程度の文字列作成があるからです。
これをループの外に出してもほとんど変わりません。

#include <QtCore>
#include <QtSql>
#include <iostream>
int main(int argc, char **argv){
  QCoreApplication app(argc, argv);
  std::cout << "start" << std::endl;
  QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  db.setDatabaseName("test.db");
  if(!db.open()){
    //
  }else{
    QSqlQuery q;
    q.exec("create table testtable (id integer primary key,"
      " c1 varchar(255), c2 varchar(255), c3 integer);");
    for(int i = 0; i < 500; ++i){
      QString s(QObject::tr("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"));
      QString v(QObject::tr("'%1', '%2', %3").arg(s).arg(s).arg(i));
      q.exec(QObject::tr("insert into testtable (c1, c2, c3) values (%1);")
        .arg(v));
    }
    db.close();
  }
  std::cout << "end" << std::endl;
  return app.exec();
}

243:デフォルトの名無しさん
10/04/20 21:19:23
>>241
まじですか
やってみます

244:デフォルトの名無しさん
10/04/20 21:26:53
>>241
解決しました! 爆速ですw 本当にありがとうございました!!!

#include <QtCore>
#include <QtSql>
#include <iostream>
int main(int argc, char **argv){
  QCoreApplication app(argc, argv);
  std::cout << "start" << std::endl;
  QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  db.setDatabaseName("test.db");
  if(!db.open()){
    //
  }else{
    db.transaction();
    QSqlQuery q;
    q.exec("create table testtable (id integer primary key,"
      " c1 varchar(255), c2 varchar(255), c3 integer);");
    for(int i = 0; i < 500; ++i){
      QString s(QObject::tr("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"));
      QString v(QObject::tr("'%1', '%2', %3").arg(s).arg(s).arg(i));
      q.exec(QObject::tr("insert into testtable (c1, c2, c3) values (%1);")
        .arg(v));
    }
    q.clear();
    if(!db.commit()) db.rollback();
    db.close();
  }
  std::cout << "end" << std::endl;
  return app.exec();
}

245:230
10/04/20 22:17:44
>>231
ちゃんと動きました
ありがとうございます

246:デフォルトの名無しさん
10/04/20 23:32:55
    ヘ⌒ヽフ
   ( ・ω・) ㌧㌧
   / ~つと)

247:デフォルトの名無しさん
10/04/21 00:46:03
>>82の続きですが、qtの解説サイトでお勧めはありますか?

248:デフォルトの名無しさん
10/04/21 02:28:14
ググった感じだとこのあたりかな?

日本語
URLリンク(www.off-soft.net)
URLリンク(qt-labs.jp)

英語
URLリンク(www.tuxradar.com)
URLリンク(cartan.cas.suffolk.edu)
URLリンク(www.qtrac.eu)

249:デフォルトの名無しさん
10/04/21 11:32:56
LGPLでアプリを配布するとき書かなきゃならない文章ってありまつか?

250:デフォルトの名無しさん
10/04/21 13:36:34
前提条件が何も書いてないので,それだけじゃ返事のしようがない。
↓ここのやり取りでも読んでくれ。
URLリンク(qtusersforum.s2.zmx.jp)

251:デフォルトの名無しさん
10/04/21 13:37:05
実験段階のソフトを他人(特定多数)に期間限定で使ってもらおうとする場合
その時点で既にライセンスとかソースの公開とか確認しておくことはありますか?

252:デフォルトの名無しさん
10/04/21 14:05:49
つ [㌧] >>250

253:デフォルトの名無しさん
10/04/21 14:10:12
実験段階だろうが特定多数だろうが事情は変わらない。

254:デフォルトの名無しさん
10/04/21 14:18:08
QCharの文字をcharにしたいのですが方法が分かりません。
ヘルプでQStringとか調べて、QString::utf16()はあるんだけど、QString::utf8()はコンパイルでエラーっぽいけど、どういうことでしょう。
Utf16とUtf8は簡単に変換できる筈ですよね???

255:デフォルトの名無しさん
10/04/21 14:31:57
質問がいみふめ。
最初のQChar→charの話と後のUTF-16とUTF-8の話のつながりがわからん。

ヘルプでQString調べたんならQString::utf8()なんていう関数がないのはコンパイルして
エラーを出すまでもなくわかるだろ?

要するにUTF-16とUTF-8の変換をやりたいわけ?

■UTF-16→UTF-8
QString::fromUtf16()でushort*(=wchar_t*)からQStringに入れておいて,
QString::toUtf8()で一旦QByteArrayにしてからQByteArray::data()でchar*に取り出す。

■UTF-8→UTF-16
QString::fromUtf8()でchar*からQStringに入れておいて,QString::utf16()で
ushort*に取り出す。

やってみたわけじゃないけど,これで行けると思うが。

256:デフォルトの名無しさん
10/04/21 14:43:56
QCharの文字をcharにしたいのですが

257:デフォルトの名無しさん
10/04/21 14:49:34


from~、to~、ってのが要るんですね。
今回、QCharからcharにしたかったので、
> QChar qc; //←qcに値を入れる処理も行う!
>char c = qc.toAscii(); //これでUTF-16からUTF-8に変えてるれるつもり
で何とかコンパイル通りました。


258:デフォルトの名無しさん
10/04/21 14:55:40
qc.toAscii() で確実に UTF-8 にしたいなら
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
しておかないといけないのでは

259:デフォルトの名無しさん
10/04/21 15:00:03
㌧㌧ >>258

QTextCodecの使い方やっと分かりますた。
理解するまで、意外に難しいですね。

260:デフォルトの名無しさん
10/04/21 15:02:18
そうですね

誰もが一度は通る道

だから
>>1 に書いてある

261:デフォルトの名無しさん
10/04/21 15:04:07
>>257
QChar::toAscii()のリターン値はcharであってchar*じゃないから1バイトしか入らない。
コンパイルは通るかも知らんが,UTF-8は可変長マルチバイトなんだから,QCharに
入っている文字が1バイト文字以外の場合は期待通りには動かないよ。

UTF-16からUTF-8に変換したいならQString使う必要があると思う。

262:デフォルトの名無しさん
10/04/21 15:11:54
㌧㌧㌧ >>260, 261

そうなんですかー。

後だしジャンケンみたいですが、やりたいことを最後に出します(藁):


char PathSeparator; //ライブラリのクラス変数(ファイルパスの区切り文字)

>PathSeparator = QDir::separator();
みたいな感じで、Qtからファイルパス区切り文字が欲しい。

解決策1:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QChar qc = QDir::separator();
PathSeparator = qc.toAscii();

解決策2:
QString qs = QDir::separator();
PathSeparator = qs.toUtf8();



263:デフォルトの名無しさん
10/04/21 16:00:06
関係無いけど、
どのOSでもQStringの初期値は、
>Unicode 4.0
なんだ?

264:デフォルトの名無しさん
10/04/21 16:13:04
>>262
なぁんだ。最初から結果は1バイトだってわかってるんじゃん。
それなら解決策1で良いし,

> QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

は必要ない。ASCII文字はUTF-8と互換性があるんだから。

265:デフォルトの名無しさん
10/04/21 17:49:58
UTF-8
UTF8
utf-8
utf8
どれが正しいの

266:デフォルトの名無しさん
10/04/21 18:11:36
Unicode Transformation Format-8

267:デフォルトの名無しさん
10/04/21 18:13:20
>QTextCodec::setCodecForCStrings

の初期値は何が良いんだろ。

268:デフォルトの名無しさん
10/04/21 18:23:51
>>267
ソースの文字コード

269:デフォルトの名無しさん
10/04/21 19:00:59
システムのロケール

270:デフォルトの名無しさん
10/04/21 21:01:25
qwebviewとqtextbrowerって何が違うの?

271:デフォルトの名無しさん
10/04/21 21:10:12
>>270
QWebViewには通信機能まで含まれてるから、インターネット接続環境があれば
それだけで外の世界のwebページにまでアクセスできる。
簡単なブラウザならすぐ作れるよ。

QTextBrowserはHTMLが表示できるだけなので、リンクが貼ってあるHTMLでも
リンク先が外の世界だと飛べない。ローカルファイルなら大丈夫だけど。

272:270
10/04/21 21:12:31
>>271
QTextBrowserで写真の表示/javascriptの対応を教えてください

273:271
10/04/21 21:17:18
補足。>>248が紹介してくれたここ↓にQWebViewでブラウザを作る例があるね。
URLリンク(qt-labs.jp)

274:271
10/04/21 21:20:56
>>272
ごめん。知らんので調べないとわからん。
写真は普通にHTML内に<img>タグでローカルの画像ファイルを指定すれば良いんじゃないの?

エラい人フォローよろしく。

275:270
10/04/21 21:24:33
>>273
ありがとう

276:デフォルトの名無しさん
10/04/21 21:48:36
>>272
QTextBrowser で使える HTML のタグはこちら。
URLリンク(doc.qt.nokia.com)
<img> が使えるので画像はOKだが、JavaScript はない。

軽量だが制限も多く複雑なページや動きのあるページには向かないのが QTextBrowser/QTextEdit
普通の HTML + JavaScript も動くがでかいのが QWebView
というイメージ。

277:デフォルトの名無しさん
10/04/21 21:56:43
>>272
>QTextBrowserで写真の表示/javascriptの対応を教えてください
URLリンク(doc.trolltech.com)
URLリンク(doc.trolltech.com)
を読めば分かる。

278:デフォルトの名無しさん
10/04/21 21:58:36
>>270
>qwebviewとqtextbrowerって何が違うの?
URLリンク(doc.trolltech.com)
URLリンク(doc.trolltech.com)
を読めば分かる。

279:デフォルトの名無しさん
10/04/21 22:01:55
>>247
>qtの解説サイトでお勧めはありますか?
URLリンク(doc.trolltech.com)
これを読めば分かる。

280:270
10/04/21 22:04:38
>>276
わざわざありがとうございます

281:デフォルトの名無しさん
10/04/21 22:49:45
qtの日本語解説サイトお願いします

282:デフォルトの名無しさん
10/04/21 22:59:10
>>281
>qtの日本語解説サイトお願いします
URLリンク(www.alc.co.jp)


283:デフォルトの名無しさん
10/04/21 23:02:56
demos/mainwindow の中に saveLayout で
geometory と state を保存している部分がありますが
これをメニューから実行するのではなく
アプリケーション終了時に自動でやりたいと思います
この場合 MainWindow::closeEvent() の中に書くのが妥当なのでしょうか?
他に的確な場所ってありますか?


284:デフォルトの名無しさん
10/04/21 23:07:45
>>283
URLリンク(doc.trolltech.com)
を読めば分かる。


285:デフォルトの名無しさん
10/04/21 23:42:36
>>284
出来ました
ありがとうございました

286:デフォルトの名無しさん
10/04/22 00:03:05
>>281
さすがにalcには載ってないねw
日本語で参考になるのは、

URLリンク(qtprogramming.s2.zmx.jp)

あたりかな。でも基本的に英語のドキュメント読むのは避けては通れないよ。
「を読めばわかる」の人が誘導してくれているけど、英語のドキュメント読まずに
聞いていると思われる人と、目的の解説が探せないで聞いていると思われる
人では明らかに対応が違ってるでしょ?


287:デフォルトの名無しさん
10/04/22 00:20:32
>>286
>さすがにalcには載ってないねw
英語のドキュメントを読もうともしていないということ。
>基本的に英語のドキュメント読むのは避けては通れないよ。
読めないなら他のことをやっても同じ。
>英語のドキュメント読まずに聞いていると思われる人と、
論外。
>目的の解説が探せないで聞いていると思われる人では明らかに対応が違ってるでしょ?
書いてあることを探そうとすらしていないのでは?

288:デフォルトの名無しさん
10/04/22 00:21:41
>>287
おまいは懇切丁寧でウィットの入った優しい返答の揚げ足をとって何が面白いんだ?

289:デフォルトの名無しさん
10/04/22 00:29:13
ここで質問すると作業が捗るので
見る見る品質が上がって行きます
2chは糞スレ糞レスも多いですが
まだまだ捨てたものではないです
人類の発展に貢献していると思います

290:デフォルトの名無しさん
10/04/22 01:48:23
肩の力抜こうぜ
適当な質問に適当に答えたり叩いたりできる場所だって必要さ

291:デフォルトの名無しさん
10/04/22 06:13:44
exe を複数起動するとウィンドウも複数出来てしまいますが
ひとつしか起動出来ない(もし exe を起動しようとしたとき
既に立ち上がってればそれがアクティブになる)ようにするには
どのようにコーディングすればよいのでしょうか?

292:デフォルトの名無しさん
10/04/22 06:31:01
>>291
URLリンク(qt.nokia.com)
を読めば分かるかもしれない。

293:デフォルトの名無しさん
10/04/22 10:02:03
QTreeWidget と QTreeView は
どう使い分ければよいのでしょうか?


294:デフォルトの名無しさん
10/04/22 10:12:56
わからないうちはQTreeWidgetでおk

295:デフォルトの名無しさん
10/04/22 11:49:41
URLリンク(randt.jp)

>Qtアプリケーションを作成していて、undefined reference to vtable for <Class Name>エラーが出るなら

エラーが出るんですが、Qtと関係ないクラスにも”Q_OBJECT”って要るんですか?
自作クラスの中のQt部品といえば、QStringとメッセージボックスくらいしか無いのですが。

296:デフォルトの名無しさん
10/04/22 12:03:06
>>292
それ使ってるよ。うまく動いてる。

297:295
10/04/22 13:30:40
自己レス:

>”Q_OBJECT”が要る

のは勘違いでした。

>[ビルド]-[qmakeの実行]を実行

が必用でした。

298:デフォルトの名無しさん
10/04/22 16:20:07
Qt Creator でコンパイル指定子(#define 、みたいな)設定できまつか?

299:298
10/04/22 16:51:36
>DEFINES +=

でできますた。

URLリンク(doc.trolltech.com)

300:デフォルトの名無しさん
10/04/22 20:26:20
これゲームとか作れるの?

301:デフォルトの名無しさん
10/04/22 20:29:12
不可能じゃないけど、向いてないよ

302:デフォルトの名無しさん
10/04/22 20:37:53
それは残念

303:デフォルトの名無しさん
10/04/22 22:15:16
qtのクラスを継承しない時は、絶対に#include <QString>しないとダメなの?

304:デフォルトの名無しさん
10/04/22 22:41:29
#include <QtCore>


305:303
10/04/22 22:51:15
>>304
OK,Thx

306:デフォルトの名無しさん
10/04/22 23:14:11
QButtonのフォーカスをクリックはできるけどフォーカスを保持しないように
(スペースとかでは反応しないように)するにはどうしたらいいのでしょうか?
ClickFocusだとフォーカスがボタンに残ってしまいます。
クリック後に自前でフォーカスを移動させるしかない?


307:デフォルトの名無しさん
10/04/22 23:26:19
taborder=-1

308:デフォルトの名無しさん
10/04/23 09:46:53
Qt Ctreatorで作成したウィンドウのサイズを実行時にユーザーが変更できないように
するには,フォームエディタでプロパティのminimumSizeとmaximumSizeをも同じ値に
するのが正しいやり方なの?

309:デフォルトの名無しさん
10/04/23 09:49:40
yes

310:デフォルトの名無しさん
10/04/23 11:49:44
no

311:308
10/04/23 11:58:01
>>310
具体的にどうすれば良いか教えてください。

312:デフォルトの名無しさん
10/04/24 00:48:40
>>311
>310 の no は no。>309 の yes が yes。

313:デフォルトの名無しさん
10/04/24 09:10:06
QWidget::setFixedSize(const QSize&)

314:デフォルトの名無しさん
10/04/24 10:14:04
>>313
ヘルプを読むと、それって結局minimumSizeとmaximumSizeを同じ値にしてるだけだから、
ソースコード上に書くか、Qt CratorのGUIデザイナ上でプロパティを設定しておくかの
違いだけ。

315:デフォルトの名無しさん
10/04/24 10:35:14
で?

316:デフォルトの名無しさん
10/04/24 10:39:40
QtのDemoに入ってるアプリはsetFixedSizeでやってたから
俺はsetFixedSizeを使ってる

317:デフォルトの名無しさん
10/04/24 11:48:29
>>315
>>308


318:デフォルトの名無しさん
10/04/24 12:42:48
フォームエディタでポチポチするよりコンストラクタに一行追加する方が楽だし応用もできる

319:デフォルトの名無しさん
10/04/24 12:43:18
>>316
setFixedSizeの本質は>314。

320:デフォルトの名無しさん
10/04/24 12:51:18
loopy

321:デフォルトの名無しさん
10/04/24 13:09:35
>>311
src/gui/kernel/qwidget.cpp
コードを読めば分かる。

322:デフォルトの名無しさん
10/04/24 14:09:00
>>318
GUIデザイナ上でプレビュー見ながら視覚的に丁度良いサイズにしておいて、
geometorytからminimumSize、maximumSizeにwidth/heightを書き写した方が
やりやすい。

323:デフォルトの名無しさん
10/04/24 15:03:22
どうやったら、zipとrarw解凍できるの?

324:デフォルトの名無しさん
10/04/24 15:12:00
>>323
unzipとunrar

325:デフォルトの名無しさん
10/04/24 15:44:22
QTableViewを使うと、内容を編集する際に
前のデータがまるっと消えてしまいますが、
前のを残して修正するには、
やはりカスタムのデリゲートを作らないとだめでしょうか。

326:デフォルトの名無しさん
10/04/24 16:32:10
>>325
モデル作っちゃったのなら、そうするのがいいかもしれないけど
まだ作ってないのならQTableWidgetにしたら消えなかった気がする

327:デフォルトの名無しさん
10/04/24 17:43:07
TableView / TableWidget や
TreeView / TreeWidget の使い分けの基準が判らんのですが
どこかで判りやすく説明されているサイトとかありますか?
一応「入門Qtプログラミング」は持ってるんですが良くわからなかったので。

328:デフォルトの名無しさん
10/04/24 17:52:23
>>327
URLリンク(doc.trolltech.com)

329:デフォルトの名無しさん
10/04/24 18:32:28
>>327
TableWidgetやTreeWidgetを使って行き詰まって後悔してからTableViewやTreeViewを使う。

330:デフォルトの名無しさん
10/04/24 18:45:48
わかりました。
ありがとうございます。
*Widget で作ったソースをあとで *View に変更するときになっても
そんなに書き換えなくても済むという理解であってますか?。


331:デフォルトの名無しさん
10/04/24 20:02:21
QFile::WriteOnly
QIODevice::WriteOnly
どっちが正しいのでしょう

332:デフォルトの名無しさん
10/04/24 20:37:19
>>331
URLリンク(doc.trolltech.com)
Inherits QIODevice

333:デフォルトの名無しさん
10/04/24 20:40:29
>>330
目的に合った*Widgetを作るというようにすれば。

334:デフォルトの名無しさん
10/04/24 21:31:26
処理時間のかかる共有ライブラリを実行中に
画面をフリーズさせない方法を教えてください

お願いします。

335:デフォルトの名無しさん
10/04/24 21:38:03
>>334
スレッドを分ける

336:デフォルトの名無しさん
10/04/24 21:40:54
>>335
スレッド分けて
a.start();
a.wait();
ってやるとスレッド実行中はフリーズしちゃいますよね
これはどうやって回避させるんでしょうか?

337:デフォルトの名無しさん
10/04/24 21:46:19
>>336
waitじゃなくてfinished()かrunning()でポーリングすればいいんでね

338:デフォルトの名無しさん
10/04/25 01:24:59
qDebug() << "日本語";はOKだけど
qDebug("日本語");は駄目なん?

339:デフォルトの名無しさん
10/04/25 02:37:41
qDebug() << qPrintable(msg); と qDebug("%s", qPrintable(msg)); で結果が異なる

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

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

340:デフォルトの名無しさん
10/04/25 07:43:13
qDebug(fmt, ...) じゃないとリリースビルドでもコード残っちゃうから
普通に日本語使えるようにして欲しいなあ

341:デフォルトの名無しさん
10/04/25 08:40:51
>>340
>普通に日本語使えるようにして欲しいなあ
いろいろなコンパイラのことを考えれば、日本語文字列を使わないのが最もよい。

342:デフォルトの名無しさん
10/04/25 09:52:17
>>341
Qtのサポートしてるコンパイラ(g++,msvc,icc etc)については
問題無いと思うが

343:デフォルトの名無しさん
10/04/25 10:05:33
よいプログラムを書きたいのではなく、よいソフトウエアを作りたいのです


344:デフォルトの名無しさん
10/04/25 10:13:09
よいソフトウェアを維持するために
よいプログラムを書きましょう

345:デフォルトの名無しさん
10/04/25 11:57:27
QtAssistantでQWidgetを検索しても出てこないのって俺だけ?
ページはあるのに…

346:デフォルトの名無しさん
10/04/25 12:28:30
>>339
さんくす
で、結局TRACEに対応するものはないってことか?

347:デフォルトの名無しさん
10/04/25 13:43:05
>>340
「普通に」って書いてるから分かってるんだと思うけど
まったく日本語が使えない訳じゃなくて
fmtに日本語が使えないだけだから
qDebug("var: %1", qPrintable(var));
と書けばいい話
そもそもデバッグってそういうもんでしょ?

348:デフォルトの名無しさん
10/04/25 13:46:50
たしかにdebugしようとして文字列表示させてるのに
それが文字化けしてたらdebugにはならん罠

349:デフォルトの名無しさん
10/04/25 14:01:13
>>347
qDebug("var: %s", var.toUtf8().constData());
が正しい

350:デフォルトの名無しさん
10/04/25 16:54:52
Qtのアプリケーションに日本語を使うと起動が遅くなる気がするんですが、
これは気のせいですか?

351:デフォルトの名無しさん
10/04/25 17:13:26
気のせいです

352:デフォルトの名無しさん
10/04/25 17:20:10
qjpcodecs4のpluginを起動時に読みに行くけど
気が付くほど遅くなるとは思えない

353:デフォルトの名無しさん
10/04/25 19:10:43
>>342
VSは、UTF-8をSJISに変えてしまうという問題あり。

354:デフォルトの名無しさん
10/04/25 20:16:05
>>350
プロファイリングをして解析し、日本語が問題だと特定してから言うべきことでしょう。

355:デフォルトの名無しさん
10/04/25 20:17:27
>>348
文字化けせずに表示する方法があるのだから全く問題ない。

356:デフォルトの名無しさん
10/04/25 20:35:27
プロファイリングをして解析し、日本語が問題だと特定したら2chのスレじゃなくて開発に報告してあげましょう。

357:デフォルトの名無しさん
10/04/26 01:14:22
>>347->>349
回避法ありがと。まあテンプレでもqDebug(fmt)は避けてるし

プロジェクトで使うなら「ストリームqDebug使え」って方針がわかりやすくて無難だと思う

でもQtが内部UTF-16なのにsprintf/snprintfをUTF-16用に書き直さないのは謎だな
Qt4.6のQString::sprintfの説明には「We do not recommend using QString::sprintf() in new Qt code」とあるし、
qDebug(fmt)をobsoluteにしたいと思ってるのかな方向なのかな

>>350
多分気のせいだと思う

358:デフォルトの名無しさん
10/04/26 02:44:58
>>340
>qDebug(fmt, ...) じゃないとリリースビルドでもコード残っちゃうから

まじ?

359:デフォルトの名無しさん
10/04/26 20:18:35
ストリーム形式で%04xなんてどう書いていいのかわからん

360:デフォルトの名無しさん
10/04/26 22:21:17
今回、初めてリリースビルドしたんだが
warningがいっぺんに40個もでて来てびっくり
その中で、
dereferencing pointer '<anonymous>' dose break static-aliasing rules
とは、どんな警告?
場所はqvector.h内の
void QVector<T>::free(Data *x)
{
if(QTypeInfo<T>::isComplex){
T* b = x->array;
T* i = b + x->ize; ここを差すんだけど
コード内で2箇所ほどQVectorを使ってるけど、どこが問題なのかよく分かりません



361:325
10/04/26 22:41:20
>>326
遅くなりましたが325です。
モデルを分けたのは、
Widgetにするとデータ複製が入るしなあ、と思ったのです。
実際には想定行数は1万行未満なので、
今時問題ないのかもとは思いますが……

モデルは作ったけど、とりあえず状態だし
TableWidgetを試してみます。
ありがとうございます。

362:デフォルトの名無しさん
10/04/26 22:51:23
>>359
URLリンク(doc.trolltech.com)
URLリンク(doc.trolltech.com)


363:デフォルトの名無しさん
10/04/28 15:42:43
QTabWidget で,指定したページの可視/不可視をタブごと切り替えたいのですが,良い方法はないでしょうか?
各ページは QWidget になっているので,QWidget::hide() を使ってみたらページの中味が空になるだけでした。

また QTabWidget::setTabEnabled() だとタブ上のラベルが灰色になってクリックできなくなるだけで,タブ自体は
見えてしまっています。

QTabWidget::removeTab() や QTabWidget::insertTab() を使って何とかしようとしましたが,insertTab() は
引数に挿入位置のインデックスが必要なので,タブの可視/不可視を切り替えた時に,元の順番どおりに
タブを並べるのが困難で挫折しました(タブ上のラベルも保存しておかないとならないので QHash とか
使ってゴニョゴニョやったんですが)。

お知恵を貸してください。

364:デフォルトの名無しさん
10/04/28 17:02:24
曖昧すぎる
どうしたいのかをもう少し厳密に説明してくれ

365:363
10/04/28 17:39:23
>>364
曖昧にならないように説明したつもりだったんですが,伝わらなかったようですね。
まず「タブ」という言葉が曖昧なようなので,QTabWidget に表示される各ページ上部の四角く
突出した部分を「タブ」と呼ぶことにします。

やりたいのは,指定したページをタブごと見えなくしたり見えるようにしたりすることです。
あるページを見えなくした場合,次のページ以降のページがタブごと詰めて表示され,一旦
見えなくしたページを再び見えるようにした場合,元の位置に挿入されるようにしたいのです
(ページの順序は常に保存される)。

以前使っていたC++ Builderではこれが普通に出来たので,Qtでも同じようにしたいのですが,
やり方が見つかりません(現在,C++ BuilderからQtにソフトを移植中)。

よろしくお願いします。

366:360
10/04/28 19:03:11
struct IDPoint{
double x;
double y;
int tool;
bool fl;
};

QVector <IDPoint> m_PntAry;

こう書いてたら、先の警告がでました。
std::vectorに換えたら警告はきえました。
どうして?


367:デフォルトの名無しさん
10/04/28 20:09:43
>>365
TabView

368:デフォルトの名無しさん
10/04/28 20:30:07
>やりたいのは,指定したページをタブごと見えなくしたり見えるようにしたりすることです。
>あるページを見えなくした場合,次のページ以降のページがタブごと詰めて表示され,一旦
>見えなくしたページを再び見えるようにした場合,元の位置に挿入されるようにしたいのです

この部分が何を言っているのかよくわからない。
特に「見えなくしたり見えるように」というのがどういう意味なのか図に書いて説明して

369:デフォルトの名無しさん
10/04/28 20:35:03
>QTabWidget::removeTab() や QTabWidget::insertTab() を使って何とかしようとしましたが,insertTab() は
>引数に挿入位置のインデックスが必要なので,タブの可視/不可視を切り替えた時に,元の順番どおりに
>タブを並べるのが困難で挫折しました(タブ上のラベルも保存しておかないとならないので QHash とか
>使ってゴニョゴニョやったんですが)。

これをやるしかないだろ
手抜きを考えずにまじめにやろう

370:デフォルトの名無しさん
10/04/28 20:42:32
>>365
それそのもの、といったメソッドはなさそうです。
QTabWidgetを継承して
void MyTabWidget::setTabVisible(int idx, bool show){
this->setTabDisable(idx, show);
this->tabBar()->tabButton(idx)->setVisible(show);
}
でいいのかなぁ。

371:365
10/04/28 22:15:50
>>368
> 特に「見えなくしたり見えるように」というのがどういう意味なのか図に書いて説明して

これがわからないと言われてしまうと仕方ないですね。AAなんか簡単に描けませんし。
他の方にはわかっていただいてるようですが、簡単に言うと「消したり出したり」です。
QWidget::hide() とか QWidget::show() のようなことを言っています。

ただ、消した時、それ以降のタブが左に移動して詰められるところが単純に消すのとは
異なります。

372:365
10/04/28 22:24:56
>>367
QTabViewというウィジットはないようですし、ヘルプでTabViewを検索しても何も
出てきませんが...

>>369
> これをやるしかないだろ
> 手抜きを考えずにまじめにやろう

おっしゃるとおりで、頑張ってやれば出来るのはわかってるんですが、想像以上に
ややこしくて、出来てから「なぁんだ、そんな手があったのか」ってことになるかも
しれないと思って、先に聞いてみた次第です。

>>370
私もそれを試して見ようと考え始めていました。
QTabWidget::tabBar() って protected なんですね。
ポイントは、tabBar()->tabButton(idx)->hide() とやってちゃんと消えてくれるか
どうかですね。


373:365
10/04/28 23:38:25
>>370
Qt Creatorでフォームに貼ったQTabWidgetを格上げしてやってみましたが、
残念ながらダメでしたorz
tabBar()->tabButton() で返される QWidget* の値が 0 になってしまいました。

そもそも tabButton() の第二引数の ButtonPosition の意味がヘルプを読んでも
不明です。これに指定できるのは QTabBar::LeftSide か QTabBar::RightSide ですが、
意味がわかりません。まぁ、どちらを指定しても結果は同じなんですが。

やはり>>369の言われるように、頑張るしかなさそうに思えてきました。


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