1 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 04:29:47 ] Qt(キュート)は C++ ベースの GUI ライブラリです。 フォーム、ボタンなどの各種ウィジェットからネットワーク、マルチスレッド、グラフィックス(OpenGL)や 各種コンテナ、XMLパーサー、組み込み JavaScript など、ライブラリの機能は多岐に渡ります。 また、「Qt Creator」という GUI ビルダ付きの専用 IDE が用意されています。 ■対応プラットフォーム(デスクトップ用途の場合) Windows 98, Me, NT4, XP, Server2003, Vista Mac OS X 10.3, 10.4, 10.5 Linux ■ライセンス ・オープンソース版(Open-source version) LGPL 2.1 または GPL 3.0 のうちどちらかを利用者が選べます。 LGPL を選んだ場合は商用利用が可能です(いくつか制限あり)。 ・商用版(Commercial version) こっちはQt Softwareか日本の代理店(SRA社)とライセンス契約(年間30万くらい?)を結んで使います ■Qt を使って作られたソフト例 KDE、Adobe Photoshop Elements、Google Earth、Skype、DAZ Studio など ■前スレ [KDE/Qt]Qtについての疑問を教えあうスレ 3 pc11.2ch.net/test/read.cgi/tech/1194158506/
2 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 04:30:12 ] ■リンク ・Qt Software (旧Trolltech社/現在はNokia社の一部門) www.qtsoftware.com/ ・Qt のダウンロードページ(オープンソース版は、LGPL/Free Downloads タブから) www.qtsoftware.com/downloads ・Qt のダウンロード(FTP) ftp://ftp.qtsoftware.com/qt/source/ ・SRA社(日本の代理店)の日本語で読める Qt 関連ドキュメント www.sra.co.jp/qt/relation/index.html ■ライセンス関連まとめ 各ライセンスでの自作アプリのソース公開/頒布 Qtのライセンス アプリのライセンス Qtの頒布/(変更部分のソース公開) GPL GPL(ソース公開必須) 必須 LGPL 任意(ソース公開不要) 必須 商用 任意(ソース公開不要) 不要 *: LGPLは動的リンク時 実際には他にも条件(リバースエンジニアリング関係とか)あるので、 きちんとライセンスの条文を読むこと。
3 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 04:30:29 ] Windows ユーザー向け Tips ■どれをダウンロードするの? ・Download Qt SDK for Windows* (194 Mb) IDE&コンパイラ付きインストーラー(Qt Creator&MinGW) すぐに使える。オススメ ・Download Qt libraries 4.5 for Windows (136 Mb) MinGW(gcc)版インストーラーや、その他のコンパイラ(VisualC++など)用のソースコード VisualC++等でQtを使うには、これを落として Qt 自体をビルドする必要がある(2〜3時間かかる) ■Qt Creator&MinGW Windows版について ・プロジェクトのパスに半角スペース、日本語を入れちゃダメ ・日本語のソースコードは UTF-8 にする 「Projects」タブの「Editor Setting」設定でエディタの Encoding を「UTF-8」にする デフォルトの System(ShiftJIS)は gcc と相性が悪い ・デバッグ出力はとりあえず英語にする qDebug() に日本語を出力するとデバッガコンソールが文字化けする(UTF-8、ShiftJISどっちもムリ) ・配布時は mingwm10.dll も忘れずに一緒に入れておく MinGW 環境でコンパイルするとこのDLLが必要になる。このファイルは public domain で配布上の制限はない
4 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 09:19:30 ] >>1 乙
5 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:15:22 ] ねーねー、Qtアプリの多重起動禁止ってQtのAPI使ってできる?? QMutexじゃ無理なんだよね?
6 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:37:26 ] >>1 うは、LGPLで使える様になったのか。NOKIAグッジョブb 今までGPL汚染が嫌で遠ざけていたけど、素晴らしいね。 そもそもGPLはライブラリのライセンスには不適格だから、 LGPL化は正常な方向への舵取りですね。 これでwxやGtk+に奪われた領土を少しは回復出来るかな?
7 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 11:47:16 ] QSettingsで、キー内容にカンマ(,)をつけると値が取れなく なるんですが、どうしてでしょう?マニュアルにもWebでもカンマに ついて一言も書いてないです。
8 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 18:35:40 ] >>7 カンマがセパレータとして認識されてるんじゃない?
9 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 00:49:52 ] ははは
10 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 03:18:49 ] >>8 うーん。セパレータと解釈されてそうですが、そういう設定ないんですよね。 QSize型を書き出すと@Size(100 100)とか出力される例がマニュアルにあって、それもカンマ 使わずにスペースで区切ってあるんですよね。どうもカンマを使えないのはNokiaも知ってるっぽい?です。 なんかこういう重要な事がマニュアルに書いてないのが オープンソースあがりっぽい感じがして少しがっかりです。
11 名前:デフォルトの名無しさん [2009/04/20(月) 08:23:50 ] >>10 環境は何ですか。 私の環境LinuxのQt4.5では、キーにカンマ(,)をつけても、 書き込み読み込みともにうまくいきました。 ただし、ファイルの中を見ると、カンマ(,)の部分は%2Cとなっています。 ASCIIの16進コードに置き換えられているようです。
12 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 11:15:20 ] >>11 おお。WIndowsXPのQt4.5です。 すみません、読み込みは散々調べましたが、書き込みをやってませんでした。 いまやってみたら、 settings.setValue("TEST/KEY","0,1"); // KEY="0,1" とダブルクォーテーションに包まれて出力されました。 この場合読み込みもうまくいきました。 Linuxと挙動がちがいますね。そちらではダブルクォーテーションになってませんか?
13 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 11:25:17 ] >>11 ああ、なるほど、キーにカンマをつけた場合の話しですね。 私はキーの値にカンマをつけた場合の話しです。 キーにカンマをつけてみたら、同じく settings.setValue("TEST/KE,Y","0,1");//KE%2CY="0,1" %2Cとなりました。挙動は一緒みたいですね。
14 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 11:32:35 ] >>11 誤るの遅くなりましたが、キー内容という表現が悪かったです。すみませんでした。
15 名前:デフォルトの名無しさん [2009/04/20(月) 17:36:26 ] >>12 こちら(Linux)でも同じです。 settings.setValue("TEST/KE,Y","0,1"); とすると、ファイル内では、KE%2CY="0,1"となっています。 >>14 こちらこそ、勘違いしたみたいですね。やりたいことは、値として整数値の組をカンマで区切ったものを読み込ませたいということですね。 もしそうならば、下記のようにすればどうでしょう。 (ファイルの中) TESTKEY=100,20,50 (サンプルコード) #include <QDebug> #include <QVariant> #include <QList> QVariant values = settings.value("TESTKEY", QVariant(QList<QVariant>())); QList<QVariant> valueList = values.toList(); const int cSize = valueList.size(); int value; for(int i = 0; i < cSize; ++i) { value = valueList.at(i).toInt(); qDebug() << value; } (出力結果) 100 20 50
16 名前:デフォルトの名無しさん [2009/04/20(月) 19:15:02 ] >>5 商用ライセンスならこれでできます。 Single Application ― Qt – A cross-platform application and UI framework www.qtsoftware.com/products/appdev/add-on-products/catalog/4/Utilities/qtsingleapplication/
17 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 19:19:28 ] >>15 おお、すばらしいです。 やりたいことが出来ました。 ですがちょっと納得いかないので調べてみます。 大変ありがとうございました。
18 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 21:15:53 ] >>15 やっぱりちょっと問題があるようです。 QVariantのtoList()は、"0,1"の場合、要素数2のリストを作ってくれますが、 "0"のようにカンマが無い場合、要素数が0になってしまうようです。 要素の数でなく、カンマの数で要素数が決まる?ようです。 少々がっかりです。 ↓もがっかりな点です。 QStringのtoInt()関数 int toInt ( bool * ok = 0, int base = 10 ) const QVariantのtoInt関数 int toInt ( bool * ok = 0 ) const 同じ関数名なのに機能が統一されてない(´・ω・`) たぶん、ほかにもいろいろとこういったものがあるのでしょうね(´・ω・`)。
19 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 21:42:39 ] 遅れたけど>>1 モツ 随分様変わりしたな それはそうと、Qtを引っさげてIT業界へ転職しようと考えてる 応用情報午後で不合格ほぼ確定なオレにゃ甘い考えだろうか
20 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 21:57:33 ] >>19 いいやそんなことないぞ。がんばれ
21 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 00:17:00 ] Visual Studio2008でコンパイルしたQT4.5使ってます。 qt-vs-addin-1.0.0-rc1.exeもインストールし、 ほぼ問題なく使えているのですが、 ウォッチウィンドウなどの表示で、 QMapのデータがerrorと表示され、内容が見れず困っています。 autoexp.datの設定には、QMapの内容が書かれているらしいのですが、 どうもよく分かりません。一部は括弧が対応していないところも見つけたので ひょっとするとこのファイルがおかしいのではないかと思っています。 どなたか解決できてる方いらっしゃいますか?
22 名前:デフォルトの名無しさん [2009/04/21(火) 01:09:36 ] >> 18 >QVariantのtoList()は、"0,1"の場合、要素数2のリストを作ってくれますが、 >"0"のようにカンマが無い場合、要素数が0になってしまうようです。 >要素の数でなく、カンマの数で要素数が決まる?ようです。 QVariant values = settings.value("TESTKEY", QVariant(QList<QVariant>())); として、読み込んだ場合、値によって返ってくるvaluesの型が違ってくるように実装されているようです。 ファイルの値が TESTKEY=10,20 のとき、valuesは、QVariant(QList<QString>())になっています。 このとき、リスとの各要素(QStringの中身)は、"10"と"20"になっています。 ファイルの値が TESTKEY=10 のとき、valuesは、QVariant(QString())になっています。 このとき、QStringの中身は、"10"です。 ファイルの値が TESTKEY= となって値が設定されていない時、上と同じくvaluesは、QVariant(QString())になっています。 このとき、QStringの中身は、""です。 以上を踏まえて値をとるようにすればよいのではないでしょうか。
23 名前:デフォルトの名無しさん [2009/04/21(火) 01:10:51 ] 22の続き (サンプルコード) #include <QDebug> #include <QVariant> #include <QList> QVariant values = settings.value("TESTKEY", QVariant(QList<QVariant>())); if(values.type() == QVariant::StringList) { QList<QVariant> valueList= values.toList(); const int cSize = valueList.size(); for(int i = 0; i < cSize; ++i) { qDebug() << valueList.at(i).toInt(); } } else if(values.type() == QVariant::String) { QString string = values.toString(); if(!string.isEmpty()) { qDebug() << string.toInt(); } } else { qDebug() << "here is else block"; // ここにはこないはず。 }
24 名前:デフォルトの名無しさん [2009/04/21(火) 07:52:19 ] >>21 RC1 だから開発元に報告した方がよいのでは?
25 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 15:36:06 ] >>22 丁寧に教えてくださって恐縮です。ありがとうございます。 QVariantは中に何が入っているか調べないと使えないのですね。 本当の意味のVariantじゃない気がする。。 TrollTeckはこの実装が完璧だという認識なのでしょうか。。
26 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 15:50:23 ] >>24 へんてこ英語で一応報告してきました。
27 名前:デフォルトの名無しさん [2009/04/21(火) 16:31:19 ] >>25 >QVariantは中に何が入っているか調べないと使えないのですね。 通常は、受取側がQVariantの中に何が入っているか分かっていることがほとんどでしょうからこれでも結構使えると思います。 ただ、今回の例では、settings.value()は常にQVariant::StringListを返すように実装してあるのがいいような気がします。 >本当の意味のVariantじゃない気がする。 >TrollTeckはこの実装が完璧だという認識なのでしょうか 確かに、もっと便利にできるでしょう。 将来に期待しましょう。
28 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 17:58:12 ] QVariantにはtoBool()があるのに QStringにはない(;´д⊂)
29 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 18:51:20 ] 要素が一つだけの QVariantList を作って QSettings でセーブした後で 読み出すと QVariant::toList() でちゃんと取り出せる。 その場合は "LIST=1" みたいな形ではファイルに残っていないけど。 元と違う形式で読み出そうとしてるからうまくいかないって感じだな。 なんでこんな仕様なのかはよくわからないけど。 ex. QVariantList list; list << 1; settings.setValue( "LIST", list ); iniファイル LIST=@Variant(\0\0\0\t\0\0\0\x1\0\0\0\x2\0\0\0\x1)
30 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 19:17:32 ] QTを使ったプログラムで、ユーザ定義のクラスを作る場合、 クラスは基本QObjectを継承するのがいいのでしょうか? QObjectを継承して、Q_OBJECTマクロを使っとけば、 connectとかtr()とかでC++の機能を拡張できる事と同等なので、 やっぱり全てのユーザクラスをそう作るのが基本になるのですよね?
31 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 13:11:03 ] C#なら labelTitle.ForeColor = Color.Black; で終わるところが、C++ + QTだと QPalette pal = ui.labelTitle->palette(); pal.setColor(QPalette::Normal, QPalette::WindowText, QColor(Qt::black); ui.labelTitle->setPalette(pal); と書かないといけない(;´д⊂) これって、QTの改良でなんとかならないのかな。
32 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 15:19:34 ] int i のiを文字列にする場合、 C#では、 string str = i.ToString(); で出来るけど、QTだと QString str = QString::number(i); //static関数 もしくは、 QString str; str.setNum(i); になる。 これをみて、最初、QTにはどうして同じ機能が二つ用意されてるのだろうと思ったが、 前者はstatic関数で、後者はメンバ関数だった。 ああ、なるほど、たしかにどちらも必要だな、と思った。 が、しかし。 どうしてこういうことがおきるか。 C++がオブジェクト指向言語であるにもかかわらず、 その基本になってるintなどの変数がオブジェクトになってないせいではないか。 それを徹底したのがC#。 でも、intなんか4バイト程度で済むのにオブジェクトなんかにしたら容量食うし、遅くてしょうがない。 やはり、C++QTがベストなのだろうか。 なんだろうこのジレンマ。(´・ω・`)
33 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 16:32:15 ] QSplitterの棒の位置ってデザイナで指定できる?
34 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 17:39:27 ] QTableWidgetItemには、 setBackgroundColor() はあるのに setForegroundColor() がない(´・ω・`) QTは抜けがいっぱい。
35 名前:デフォルトの名無しさん [2009/04/22(水) 19:00:35 ] >>34 QTableWidgetItem には、setForeground() と setBackground() がある。
36 名前:デフォルトの名無しさん [2009/04/22(水) 19:03:13 ] >>28 QVariant には bool を入れられるから toBool() がある。 QString には toBool() 値に対応すべき文字列がきっちりと決められないから toBool() がない。
37 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 22:21:16 ] >>26 autoexp.datのバグが登録されました。 www.qtsoftware.com/developer/task-tracker/index_html?id=251887&method=entry なんだかうれしい。
38 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 22:29:13 ] >>35 QTableWidgetItemのsetBackgroundColor()はObsoleteとなってました。 代わりがsetForeground() と setBackground() ですね。
39 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 22:29:38 ] >>32 > intなんか4バイト程度で済むのにオブジェクトなんかにしたら容量食うし、遅くてしょうがない。 COOLを勉強して、ソープで童貞卒業してから出直せや ttp://www.sage-p.com/process/cool.htm
40 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 23:46:30 ] QTでは、関数の引数でQTのオブジェクトを渡す時は constの参照渡し、で int とかboolの時は値渡ししてるんだね。 それが速いんだろうな
41 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 00:30:59 ] 至極当たり前のことじゃ…(´・ω・`)
42 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 01:47:22 ] そっか(´・ω・`) 関数の戻り値で参照返しの時と、値返しの時があったんだけど、 QStringクラスの例 QString & setNum ( int n, int base = 10 ) QString toLower () const これってどういう場合にどっちを使うのかな?(´・ω・`)
43 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 10:24:35 ] QString::setNum() は自分自身を書き換える。 すでに存在しているインスタンスを書き換えて返すので参照で返せる。 QString::toLower() は新たに文字列を作成して返す。 すでに存在しているインスタンスは変更せずに、新たにインスタンスを作成するので 参照ではなく値で返す。
44 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 11:30:35 ] 自分自身の参照を返すのって、いわゆるメソッドチェーンか Named Parameter Idiomを意識してるのかな 新しく作って返すのは依存性を考えなくて楽だけど、C++ではコピーのコストがかかるので(ry ポインタを返すのはcreate○○みたいないかにもファクトリメソッドにして、後で解放処理をすることを使い手に強いるか shared_ptrみたいなスマートポインタをつかって(ry
45 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 11:39:02 ] QWidgetの色ってpallete変えれなかったんだけど、 どうやって変えるのかな(´・ω・`)
46 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 11:55:37 ] >>45 環境と使用した ColorRole は? palette.setColor( QPalette::Window, Qt::red ); w.setPalette( palette ); で変えられるけど。
47 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:18:11 ] >>43 QString & remove ( int position, int n ) の場合、 QString str = "ABC"; str.remove(0,1); //"BC" と代入する必要はないけど、 QString toLower () const の場合、 QString str = "ABC"; str = str.toLower(); と代入しないといけない。 これってちょっと覚えるのが難しいね。 代入しないといけないメンバ関数って何か共通点があるのかな(´・ω・`)
48 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:32:21 ] >>46 WindowsXP SP3 + VisualStudio2008 + QT4.5(open source) です 新規作成プロジェクトで test::test(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags) { ui.setupUi(this); QPalette palette = ui.centralWidget->palette(); palette.setColor(QPalette::Window, Qt::red); ui.centralWidget->setPalette(palette); } とやっても赤くならない(;´д⊂)
49 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:47:09 ] >>47 自分自身をインプレースで変えるメソッドと(QString::setNum: 戻り値の型はどうでもいい) 新しくインスタンスを作るメソッドの違いくらいわかろうぜ。(QString::toLower 戻り値の型がQString) Qtじゃなくてもよく出てくるから。 戻り値の型がどうでもいいのにQString::setNumがQString &を返しているのは 自分自身の参照を返すといろいろ便利だから。 中ではreturn (*this)ってやってる。 インプレースのほうが効率がいいが、参照渡しとかで他のオブジェクトに渡すと中身を勝手に変えられる心配もある 新しくインスタンスを作ればその心配はなくなるが、ちと効率が悪い。 あと、C++は関数の評価順が未定義なので 関数の引数にインプレースで変更する処理を書くと変になる。 インスタンスを作ればそこら辺はもんだいない(たぶん) たとえば foo(str.remove(0,1), str) // NG foo(str.toLower(), str) // たぶんOK
50 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:58:46 ] >>48 ui.centralWidget->setAutoFillBackground( true );
51 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 13:34:54 ] >>50 赤くなった(`・ω・´) ありがとう。さすがだねぃ
52 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 18:57:42 ] コンボボックスが複数あって、それぞれの変更シグナルを 一つのスロット関数で受ける場合、どのコンボボックスからのシグナルなのか 判断するには、connect以外の経由で情報を渡すか、QComboBoxの継承自作クラス で新規にシグナルを定義するしかないよね?
53 名前:デフォルトの名無しさん [2009/04/23(木) 19:19:20 ] >>52 QObject::sender()が使える?
54 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 20:09:56 ] 方法によっては QSignalMapper も使えるかも。
55 名前:デフォルトの名無しさん [2009/04/23(木) 20:38:46 ] >>18 > QVariantのtoList()は、"0,1"の場合、要素数2のリストを作ってくれますが、 リストを作りませんよ。 > "0"のようにカンマが無い場合、要素数が0になってしまうようです。 > 要素の数でなく、カンマの数で要素数が決まる?ようです。 toList() は、List と StringList が対象で、"0, 1" という文字列は対象ではないです。 > ↓もがっかりな点です。 > QStringのtoInt()関数 int toInt ( bool * ok = 0, int base = 10 ) const > QVariantのtoInt関数 int toInt ( bool * ok = 0 ) const > 同じ関数名なのに機能が統一されてない(´・ω・`) QSring は文字列が入っているから base を指定する意味があります。 QVariant には文字列が入っているとは限りません、int や bool もあるので base を指定する意味がないからです。 > たぶん、ほかにもいろいろとこういったものがあるのでしょうね(´・ω・`)。 もう少しプログラミングの基本と C++ の知識をしっかり身につけてから批判するように。
56 名前:デフォルトの名無しさん [2009/04/23(木) 20:40:25 ] >>31 > QPalette pal = ui.labelTitle->palette(); > pal.setColor(QPalette::Normal, QPalette::WindowText, QColor(Qt::black); > ui.labelTitle->setPalette(pal); > > と書かないといけない(;´д⊂) > これって、QTの改良でなんとかならないのかな。 palette でひとまとめにできるから統一的に色を扱えます。C# の方が古過ぎるのですよ。
57 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 20:56:33 ] >>53 おお、QObject::sender()で出来たよ。すごい。 超シンプルな解法!さすがだねぃ
58 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 21:37:51 ] QSettingsでiniファイルを読む場合、 childGroups()で得られるリストがファイル記述順になっててほしいんだけど、 やっぱり出来ないよね?やっぱり自作するしかないかな(´・ω・`)
59 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 00:05:56 ] Qt 4.5.1 と Qt Creator 1.1 がリリースされてますね
60 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 01:32:42 ] VS addin もbetaが消えたね
61 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 00:44:37 ] 4.5.1コンパイル中だが、北森2.5GHzで150分かかって、やっとwebkitだぜ。 いい加減i7 920辺りに買い替えるべき?C2Qなら30分くらいで終わるの?
62 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 01:21:23 ] >>61 Q9450使っているけど、かなり時間食う。
63 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 05:51:17 ] どっちかって言うとSSD買った方が速くなる
64 名前:デフォルトの名無しさん [2009/04/27(月) 10:08:28 ] Qtインストールしようとしてるんだけど これインストールフォルダに日付が入ってて気持ち悪い みんなそのままインストールしてるの?
65 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 12:56:27 ] SDKじゃなければ、バージョンごとのディレクトリがデフォルト
66 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 13:15:12 ] Windowsでmingwとqt libraryをインストールしたんだけど、win32api.hか何かが無いって 警告された。でもmingwのwin32apiパッケージ自体はインストールしてるし、問題ないよな。
67 名前:デフォルトの名無しさん [2009/04/27(月) 16:29:42 ] >>64 今ダウンロードできる最新のパッケージの場合、今月(4月)リリースされてファイル名が qt-sdk-linux-x86-opensource-2009.02.bin(Linux版の場合)。 2009は年を表していると思うけど、最後の02は2番目のリリースと言う意味だと思う。
68 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 17:37:23 ] >>64 気持ち悪いんだったら、自分でrenameすればokじゃない?
69 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 21:48:00 ] >>66 随分前(といってもVer4以降だが)、MinGWすでに入れてる環境に、 MinGWのPath指定してQtインストールしたら怒られたな いくつかファイルが足りないとかで 気持ち悪いから、MinGWのPath指定せずQtインストーラ経由でダウンロードしたら解決した それ以来、MinGWフォルダ圧縮して保管してあるお
70 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 09:27:21 ] >>61 とりあえず、メモリ余ってるならTEMPをRAMDISKにしてみるとか、 っていってもビルドしてみた感じボトルネックはCPUっぽいから効果薄いかな。
71 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 09:49:59 ] >>66 CPLUS_INCLUDE_PATHとか指定すると、specsのpathを見なかった事があった。 バージョンやbuild時の設定で違うのかもしれん。
72 名前:デフォルトの名無しさん [2009/04/30(木) 17:20:50 ] VS2005にVisualStudioアドインを入れたんですが、 QtオプションでQtVresionsタブからAddを選んで、パスを指定しても OKボタンがアクティブにならないので押せません。 このためか、Qtのバージョンを指定しろといわれて怒られます。 どうしたら良いんでしょうか?
73 名前:デフォルトの名無しさん [2009/04/30(木) 18:10:44 ] >>72 パスに日本語が含まれているとか?
74 名前:デフォルトの名無しさん [2009/04/30(木) 18:19:27 ] C:\Qt\2009.02\qt を指定しているので日本語は入っていないです。 RC1で試すと押せるのですが、パスに追加されないでいます。
75 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 20:51:19 ] ExpressEdition版というオチ
76 名前:デフォルトの名無しさん [2009/04/30(木) 22:26:59 ] ソースからビルドして、 C:\Qt\qt-win-opensource-src-4.5.1 を指定したら出来ました。 お騒がせしました。
77 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 14:11:48 ] msvc2008で-staticなビルドをしようとしたんだけどなんかエラーでる・・・ みんなどんなふうにやってますか?
78 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 16:50:26 ] 基礎的なことですが教えてください_(._.)_ ↓はQMapのkeys()関数です。(qmap.h) template <class Key, class T> Q_OUTOFLINE_TEMPLATE QList<Key> QMap<Key, T>::keys(const T &avalue) const { QList<Key> res; const_iterator i = begin(); while (i != end()) { if (i.value() == avalue) res.append(i.key()); ++i; } return res; } resをreturnで返していますが、resはこの関数内で宣言されているので、 この関数ないだけでしか存在できないのではないのでしょうか? resって自動変数ですよね?
79 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 16:57:10 ] 78>> 自己解決しました。Orz 呼び出し元側で同じ変数が作られ、それにコピーされるわけですね
80 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 20:39:37 ] メインウィンドウを持つアプリケーションの多重起動をしようとしたときに 既に開いているメインウィンドウがあれば、それをアクティブにするには どうすればよいでしょう? 多重起動防止のみならQSystemSemaphoreで可能ですが。 プラットフォーム固有の処理になってしまうでしょうか?
81 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 21:31:24 ] >>80 ttp://www.qtsoftware.com/products/appdev/add-on-products/catalog/4/Utilities/qtsingleapplication/
82 名前:デフォルトの名無しさん [2009/05/01(金) 21:53:52 ] >>72 商用版のVisual Studio Integrationを使って欲しいということでは。
83 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 21:55:28 ] >>81 ありがとうございます。 こんなのがあったのですね。 SDKと分ける理由はなんでしょうね。 同梱で良い気がしますが。
84 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 01:00:29 ] QMap、QHashのkeys(), values()で取り出せるリストを 追加順にしたいのですが、出来ないものでしょうか?
85 名前:デフォルトの名無しさん [2009/05/02(土) 11:43:32 ] >>84 入れるものに追加順が分かる識別子を付けて、取出したリストをソートしては? mapやhashは、その機能からして追加順を覚えるように実装するものじゃないです。
86 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 16:57:22 ] >>85 ちなみに.NETのコレクションクラスは追加順を覚えています。
87 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 19:11:32 ] >>86 それが仕様だったとしても何も自慢にならない希ガス
88 名前:デフォルトの名無しさん [2009/05/02(土) 20:25:30 ] >86 本当だったら出鱈目な実装だね。それかたまたま何かの加減でそうなっているだけでしょう。 プログラミングの心得が少しでもあるならそんなことはおかしいと思わなくてはならない。
89 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 23:16:26 ] >>88 心得があればMDBでKey-Value DBを作っているのと同じだと気付くと思うが。
90 名前:デフォルトの名無しさん [2009/05/03(日) 00:48:12 ] >>89 酷い実装だね。
91 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 01:11:15 ] プログラマはバカだという前提の元に プログラマに余計なことをさせないように 言語側で余計なことをするってのが 今の流行だろ
92 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 01:37:35 ] >>90 elegantではないがintelligentな実装だよ。
93 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 02:27:24 ] winXP+Qt4.5.1(mingw)でQtSingleApplicationを試してみました。 そのまま使うと問題ないですが、継承して使用すると 「アプリケーションを正しく初期化できませんでした(0xc0000005)。」 のメッセージボックスが出力されて落ちてしまいますが原因をご存知の方はい らっしゃいませんか。 // MyApplication.hpp #include <QtSingleApplication> class MyApplication : public QtSingleApplication { Q_OBJECT public: MyApplication(int argc, char* argv[]) : QtSingleApplication(argc, argv) {} }; // main.cpp #include "MyApplication.hpp" int main(int argc, char* argv[]) { MyApplication app(argc, argv); QMainWindow mwnd; mwnd.show(); return app.exec(); }
94 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 09:30:49 ] 辞書が挿入順を記憶するのは、PHPがそうだし、Rubyも1.9でそうなったし、 Pythonも2.7では(組み込みの辞書ではなく)標準ライブラリにcollections.OrdererdDict が追加された。 設定ファイルとか、JSONファイルとか、シリアライズ&でしりあらいずした後に 人間がテキストエディタで触りたいとかのとき、順序が記憶されると便利。 少ない追加コストで利便性が向上するのは悪くないトレードオフで、どちらかが 正しいということは無いと思うよ。
95 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 10:18:39 ] >>94 おまい詳しいなw LL系は知らないから参考になったお^^
96 名前:デフォルトの名無しさん [2009/05/03(日) 10:57:44 ] >>94 hashやmapにそんな無駄なコストを入れるなんて正しくないよ。
97 名前:デフォルトの名無しさん [2009/05/03(日) 11:11:27 ] >>93 argcに&が付いてないからでは? MyApplication(int& argc, char* argv[]) : QtSingleApplication(argc, argv)
98 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 11:16:08 ] >>96 単に用途によるってだけだろ 両方必要なら両方作るまでだし正しいも正しくないもねーよ
99 名前:デフォルトの名無しさん [2009/05/03(日) 11:48:30 ] >>98 検索速度を犠牲にするのだから正しくないよ。そんなのは偽物のはhash。
100 名前:デフォルトの名無しさん [2009/05/03(日) 12:32:54 ] >>94 比較対象が違います。 PHP、Ruby、Pythonのような元々速度が遅くて大容量データを 扱うのに向かない処理系ならそういった便利そうなものが付いて もいいと思う。
101 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 12:42:55 ] >>99 検索速度を犠牲にするような頭の悪い実装にするわけないでしょ? 思い込みで「酷い実装」だの批判する前にソースを読むように。 anonsvn.mono-project.com/viewvc/trunk/mcs/class/corlib/System.Collections.Generic/Dictionary.cs?view=markup