- 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/
- 151 名前:デフォルトの名無しさん [2009/05/18(月) 14:45:57 ]
- >>150
その後、分かったことですが どうやらQTextCodecのバグ?のようです。 #include <QDebug> #include <QTextCodec> QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); qDebug() << "ffあ"; QString string("ffあ"); qDebug() << string; とすると、 ffあ "ffあ" となります。 EUC-JPとかの環境でもなるか、どなたか調べてもらえないでしょうか?
- 152 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 14:51:23 ]
- QTextCodecの問題なら、ローカルでも再現できますよね?
QtCreatorを使っているなら、 エディタのオプションでエンコードを変えられます。 Emacsとかでもちゃんと文字コードは変えられますよ?
- 153 名前:デフォルトの名無しさん [2009/05/18(月) 14:53:55 ]
- >>151
訂正 今気づいたのですが、 151の結果の ffあ "ffあ" は、コンソール上では ffdy "ffdy" になっていたのですが、コピーして貼り付けたら 151のようにちゃんとした結果になっていました。 こちらの環境の問題かもしれません。 もう少し自分で調べてみなす。 お騒がせしました。
- 154 名前:デフォルトの名無しさん [2009/05/18(月) 15:03:25 ]
- てst
- 155 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 15:32:50 ]
- >>150
どうもWidgetの表示の問題のような感じ。encode/decode系は関係ないと思う。 "ff<UTF-8>" が表示で化ける感じ。 f以外を使うと化けない。 化けない環境もあるみたいなので調査中。 QString text = QString::fromUtf8("ff\xe3\x81\x82"); QLabel label( text ); label.show(); qDebug() << text; でqDebug()は正しく表示するが、QLabel(QLineEditやQTextEditも)はNG。 先頭の文字をf以外にすると問題なし。
- 156 名前:デフォルトの名無しさん [2009/05/18(月) 17:02:02 ]
- >>155
ffが先頭の文字でなくて、途中にあってもそれ以降にある日本語が化けるようです。 例えば "testfftestあ" また、"fiあ" も化けします。
- 157 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 17:31:55 ]
- >>156
フォントをDejaVu系から変えたら正常に表示されない? こちらでは他のフォントにするとちゃんと描画される。 ややこしいバグだけど、デフォルトのフォントでうまくいかないのは困るな。
- 158 名前:デフォルトの名無しさん [2009/05/18(月) 18:00:14 ]
- >>157
おっしゃる通り。フォントの問題だったようです。 ただ、DejaVu系ではだめでした。 さざなみゴシックにしたら、ちゃんと表示されました。 ありがとうございました。
- 159 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 06:29:42 ]
- レスの投稿日のような日付の文字列を1970年1月1日からの秒数に変換しようと思ったのですが、
QDateTime::toTime_tではQDateTime::fromStringで生成したデータを変換することは出来ませんでした 何か他に便利なメソッドはありますか?
- 160 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 06:48:00 ]
- と思ったら出来ました。すいません
年の入力を2桁にしていたので1909年とされていたようです 出力も2桁にしていたので気付きませんでした
- 161 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 10:16:54 ]
- >>151-158
この際、Qtをつかったとき、 日本語表示に一番適したフォントをまとめてみるべき?
- 162 名前:デフォルトの名無しさん [2009/05/20(水) 10:04:48 ]
- QTで作成したツールをVistaで起動させたら、
オブジェクトを表示させているキャンバスが、作成したGUIから外れて、 PCのモニタの左上に張り付くような感じになってしまいました。 同様の現象になった方、居ませんか? 解決策など分かりましたら、お願いします。
- 163 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 11:14:04 ]
- doxygenのようにドキュメントを生成する方法をご存知の方いませんか?
用意されているようですがわかりません。
- 164 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 12:31:21 ]
- >>163
doxygen はQtスタイルをサポートしてるから doxygenを使えばいいんじゃないの?
- 165 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 12:45:34 ]
- Qtのソースにある qdoc3(tools/qdoc3) で出来るはず。
Qtのドキュメントはそれで html にしている。
- 166 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 12:46:18 ]
- doxygenは確か、Qtリファレンスを自分でも作りたいと思った
Qt使いが作ったんじゃなかったっけ
- 167 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 21:11:40 ]
- int QHttp::request ( const QHttpRequestHeader & header, const QByteArray & data, QIODevice * to = 0 )
の使い方が分かりません。 具体的にはmixiにログインして、 home.plのhtmlソースを取得したいのですが。 QHttpRequestHeader header("POST", QUrl("mixi.jp/home.pl").toEncodedPath(), 1,1); QByteArray data((QString)("email=" + name + "&password=" + pass)).toAscii() ); //"email","password"など、POST時のIDはmixiのhtmlソースから取得しています。 QFile to("gotHtml.txt"); をnewでコンストラクトし、 実行スロットでrequest()を発射したところ、 gotHtml.txtは生成されるものの、ブランクファイルでした。 よい方法をご教示ください。 よろしくお願いします
- 168 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 22:48:15 ]
- >>167
自分も分からないので確認するべきポイントを… ・POST先URLは正しいか? ・requestの戻り値は? ・emailにnameを渡しているが正しいか? ・メアド、パスワードは正しいか? ・リクエストがPOSTで正しいとすれば、&passwordって…おかしくないですか?
- 169 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 23:09:24 ]
- >>168
ゴメン、適当すぎた qtdemoにHTTPクライアントのexampleがあるから それを参考にするといいんじゃないかな?
- 170 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 23:15:19 ]
- QNetworkAccessManagerのほう推奨じゃないっけ
- 171 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 10:11:32 ]
- QtってLGPLになった?
さらに将来LGPL版が亡くなる可能性は無い?
- 172 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 10:17:17 ]
- >>171
LGPLのライセンス上無くなるって事はありえない 開発停止とかはありえるけど, 入手や使用が不可能になることは無い
- 173 名前:167 mailto:sage [2009/05/21(木) 10:21:08 ]
- >>168-170
ありがとうございます。 POST先のURLなどは確認しています。 requestの戻り値は今夜確認します。 emailにnameを渡すのは、id=emailのinputにアカウント名を渡しています。 &passwordはPOSTの形式がid A,Bに対して、 "A=xxx&B=yyy"という形式だと、 POSTの仕組み関係のページに書いてあった気がします。 これも確認してみます。 qtdemoのexampleですか。 気づきませんでした、参考にします。 QNetworkAccessManagerですか。 よく分かりませんが、これも勉強してみます。 皆さん、ありがとうございました。 また詰まったらor解決できたら、 ご報告させて頂きますね。
- 174 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 10:56:50 ]
- >QNetworkAccessManager推奨
これは知らなんだ
- 175 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 12:12:18 ]
- >>165
ありがとうございます。 qdoc3ですが、私の環境ではQtのディレクトリ内のbinにコピーされていませんでした。 tools/qdoc3/releaseにはありましたが。 ちょっと試してみます。 >>164 折角なので本家のツールを使用してみたいと思います。
- 176 名前:デフォルトの名無しさん [2009/05/21(木) 15:39:05 ]
- Qt から既定のブラウザの起動って出来ますか?
- 177 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 15:39:21 ]
- qdoc3についてのドキュメントが見当たりませんが何処かにありますか?
本家の All Tools をみたのですがないようです。 qdoc3は拡張子がqdocconfのファイルを引数とするようですがqdocconfの 書き方などのドキュメントがあればと思います。
- 178 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 16:07:04 ]
- >>176
QDesktopServices::openUrl()
- 179 名前:デフォルトの名無しさん [2009/05/21(木) 17:06:51 ]
- QPainterでマウスカーソルにオブジェクトをくっつけて描画を行っているのですが、
Vistaマシンだと残像が残ってしまいます。 XPでは正常に描画され、VistaでもAero環境だとこれも正常に描画されます。 VistaでQPainterによる描画を行う場合、何か特別な処理が必要だったりするのでしょうか。
- 180 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 18:00:37 ]
- 初心者というか、使ったことないのでつが、Mac OS X にインストロールするの簡単でつか?
wxWidgetsをMac OS Xにインスコするのには数日費やしますたw
- 181 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 18:37:43 ]
- >>174
QHttpクラスのリファレンスに書いてあるよ doc.trolltech.com/4.5/qhttp.html#details
- 182 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 19:43:00 ]
- >>180
dmg版があるし、そいつをマウントしたら親切なインストーラがあるよ。
- 183 名前:デフォルトの名無しさん [2009/05/21(木) 22:11:23 ]
- LPCTSTRからQStringにするにはどうしたらいいですか(;´д⊂)
調べると、QString::fromUcs2()の例があるけど、QT4にはないみたいです(⊃д⊂)
- 184 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:12:04 ]
- >>183
QString::fromUtf16() は?
- 185 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:42:27 ]
- >>183
#ifndef UNICODE #define T2Q(tstr) QString::fromLocal8bit(tstr) #else #define T2Q(tstr) QString::fromUtf16(tstr) #endif
- 186 名前:デフォルトの名無しさん [2009/05/22(金) 10:48:28 ]
- QTimeが24時間までしか扱えないみたいなのですが、
24時間以上を扱うライブラリはないのでしょうか?
- 187 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 11:44:47 ]
- 目的によっては QDateTime があるけど、QTimeの制限なしだけみたいなのはないな。
- 188 名前:167 mailto:sage [2009/05/22(金) 12:21:32 ]
- >>167
です。 QNetworkAccessManagerを使ってみました。 QNetworkReply*の扱いが若干不気味ですが、 うまく行きました。 まとめると、 ・SIGNAL(finished())などを受け取る前に、 QFile::write( QNetworkReply::readAll() )を呼び出すと、 ブランクファイルになる模様です。 同一スロット内に記述せずに、分けてconnectするのが賢明らしい。 ・hidden属性のinput(固定値を返す)ような場合でもPOSTで渡す必要がある。 ・POSTするデータ形式はQUrl::toPercentEncode()をかませる必要がある。 また、全体的なクラス構成で、 myCoreなどとしてダイアログとは別にクラスを作り、 その中でQNetworkAccessManager等を生成した場合、 thisポインタを親として渡せず(QObject*じゃなくなる)、 コンストラクタで(QObject *parent)を受け取ることができない。 回避しようとQObjectを継承すると、 今度はダイアログからの呼び出し時に、 自分で定義したメンバ関数やpublicなスロットをうまく呼び出せない。 QObject::slotMySlot()が見つかりません、と表示される…。 myCore::slotMySlot()を呼び出したいのに。
- 189 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 13:21:21 ]
- >>188
>同一スロット内に記述せずに、分けてconnectするのが賢明らしい。 Qtのネットワーク系の多くのメソッドは非同期動作するので、リクエストだけ出して 返事を待たずに制御が帰る。相手からのレスポンスが来たら SIGNAL で通知される。 リクエストの送出とデータの受け取りは分けなくてはいけない。 >回避しようとQObjectを継承すると、 クラスの定義はどうやってる? Q_OBJECT はあるか。 slotMySlot() は public slots: スコープで宣言しているか等。
- 190 名前:167 mailto:sage [2009/05/22(金) 13:48:07 ]
- >189
>リクエストの送出とデータの受け取りは分けなくてはいけない。 QHttp::post()などでは、格納先を引数で渡していたので、 QNetworkAccessManager::postでも同じだと思っていたのです。 myCoreクラスではQObjectをpublicに継承し、 Q_OBJECTは書いたり書かなかったりいろいろ試しました。 slotMySlot()はmyCore.hでpublic slots:として宣言しました。 myCore : public QObject, myCore::myCore( QObject* parent ) :QObejct(parent) がいけないんでしょうか。
- 191 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 14:00:34 ]
- >>190
>QHttp::post()などでは、格納先を引数で渡していたので、 そうなのか。ごめん、QHttpの仕様はみてなかった。 >Q_OBJECTは書いたり書かなかったりいろいろ試しました。 Q_OBJECTはSIGNAL/SLOTに必須 class myCore : public QObject { Q_OBJECT public: myCore( QObject *parent = 0 ) : QObject(parent) { } public slots: void slotMySlot(); }; こんなクラス宣言なら問題はないはず。 これでだめだとすると connect() の方かな。 connect( replay, SIGNAL(finished()), mycore, SLOT(slotMySLot()) ); みたいな記述でいけるはずだが…。
- 192 名前:167 mailto:sage [2009/05/22(金) 14:10:23 ]
- >>191
ありがとうございます 今夜もう一度試してみます。 (今は呼び出し側のQDialog内でmyCoreの機能をすべて移しています) このmyCore内で、 manager = new QNetworkAccessManager( this ); をしたときはどうなるんでしょうか。 (myCore *)thisだと、managerのコンストラクタに、 一致するものがありませんよね? (QObject *)でキャストするべきなのか、 ダイナミックキャストをするべきなのか…。
- 193 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 14:18:11 ]
- >>192
キャストなしでOK。
- 194 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 14:32:02 ]
- Qtに関する本って古いものばかりですが、新しい本が出る予定は無いですか?
それとも日本語チュートリアルとかネットに落ちてますか?
- 195 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 20:39:52 ]
- オライリーのじゃダメなんか?
- 196 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 06:37:10 ]
- Xp上で使ってるんですが、Qtでlibを作りました。
これを別のQtプロジェクトのappで使いたいんですが、どこにこのlibを使うことを 記述すればいいんでしょう? makefileかと思ったんですが、run qmakeするとデフォルトに戻ってるみたいですし...。
- 197 名前:デフォルトの名無しさん [2009/05/23(土) 07:56:20 ]
- >>196
Windowsのときは、プロジェクトファイル(.pro)に次のように追記すればよい。 LIBS += c:/mylibs/math.lib qmake Variable ReferenceのLIBS項目に書いてある。
- 198 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 14:41:57 ]
- Qt creater もひとつだな
- 199 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 15:56:28 ]
- Qt Creatorにソースファイルを個別にコンパイルする機能ってないですよね。
- 200 名前:デフォルトの名無しさん [2009/05/23(土) 20:14:05 ]
- QLabelに
"TEST<a href=\"www.google.co.jp\">TEST</a>" などのリンクを設定して、ラベルをDisableにすると、 リンク部分の青字フォントがダブルストライク?のようになって汚くなります。 バグでしょうか?
- 201 名前:デフォルトの名無しさん [2009/05/24(日) 00:58:02 ]
- >>200
どのOSとスタイルで、どのフォントを指定するとなるのでしょうか。
- 202 名前:デフォルトの名無しさん [2009/05/24(日) 06:08:46 ]
- >>201
ごめんなさい、WinXPのXPスタイル?です。
- 203 名前:デフォルトの名無しさん [2009/05/24(日) 08:33:58 ]
- ソースファイルをUTF-8にするのがQTのマナーだとかってに思ってたのですが、
それではMOCが失敗するのですね? Unicodeでなくむしろ、Shift-JISやEUCでないとQtは正しくうごかない?
- 204 名前:デフォルトの名無しさん [2009/05/24(日) 09:06:07 ]
- >>203
自分の環境はLinuxだけど、ソースファイルをUTF-8にしても問題は出ていない。 環境は?
- 205 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 09:42:05 ]
- >>200
確かに表示が汚いな。 4.4と比べてみないとバグとはっきりは言い難いけど。 月曜になればいろいろチェックできると思うけど、 本家に報告してみるのも手。
- 206 名前:デフォルトの名無しさん [2009/05/24(日) 09:47:58 ]
- >>199
>Qt Creatorにソースファイルを個別にコンパイルする機能ってないですよね。 ファイルを指定してコンパイルすることは、多分できないと思います。 でもプロジェクトを複数個作って(読み込んで)、 プロジェクトを切り替えてビルドするというのはどうですか。 ただし、少々面倒かもしれないけれど。
- 207 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 10:03:31 ]
- >>197 どうもです。
LIBSをキーワードに勉強してみます。
- 208 名前:デフォルトの名無しさん [2009/05/24(日) 12:10:20 ]
- >>200
Linuxのplastiqueスタイルだけど、 ラベルをDisableにするとEnableにする前より、リンク部分が強調されている感じになった。 同じような結果。
- 209 名前:デフォルトの名無しさん [2009/05/24(日) 15:11:08 ]
- >>203
>ソースファイルをUTF-8にするのがQTのマナーだとかってに思ってたのですが、 Qtは、C文字列のデフォルトエンコーディングはLatin-1で、UTF-8にするという習慣は ありません。コンパイラーが使いたいエンコーディングを正しく処理してくれるならば、 Qt では、QTextCodec::setCodecForCStrings()などでエンコーディングを設定すれば、 Qt も正しく扱えます。 >Unicodeでなくむしろ、Shift-JISやEUCでないとQtは正しくうごかない? コンパイラーがエンコーディングをうまく扱うとは限らないので、ソースファイルには、 マルチバイト文字は記述せずに、ASCII文字にするのが最も確実です。 一番困るのは、Visual Studio 2005以上では、日本語環境でソースコード中のC文字列 をUTF-8で書いてコンパイルすると、.exe内ではSJISになってしまうことです。
- 210 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 15:14:11 ]
- 表示が混在するような場合はどうしたらいい?
ソース自体はUTF-8で書いていて、 外部から読み出したデータをQTreeWidgetで表示させたいんだけど、 そのデータがEUC-JPなんだ。 QTreeWidgetにsetCodecとか無さそうだし…
- 211 名前:デフォルトの名無しさん [2009/05/24(日) 16:36:52 ]
- >>210
外部ファイルのエンコーディングがEUC-JPなら、QTextStreamでsetCodec() して、QStringに読込めば、それをQTreeWidgetに渡して表示できます。 生のEUC-JPへののchar*ならば、QTextCodec::codecForName("eucJP")で返る インスタンスのtoUnicode(char*)でQStringを得られます。
- 212 名前:194 mailto:sage [2009/05/25(月) 10:40:45 ]
- >>195
>入門 Qt 4 プログラミング >QT Createrの説明がない Qt Createrの説明が無くてもおkなんですか? それとも、 >Qt GUIプログラミング (C magazine) の方が良いのかなぁ? Qt導入するということになったら、 自分が本読むだけでなくて、 本渡すだけでQt Createrの説明終わらせる方が楽なようなw
- 213 名前:210 mailto:sage [2009/05/25(月) 11:31:56 ]
- >>211
現状では、 QString A; QString B; となっていて、AがUTF-8(ソースコードで直値で文字列を指定)で、 BがEUC-JP(QBufferから読み込んでいる)なんだ。 うまく切り替えができないものでしょうか? それとも、この構成自体がナンセンスでしょうか。
- 214 名前:210 mailto:sage [2009/05/25(月) 11:36:53 ]
- ごめん、自己解決。
Aをtr("")としていて、BはそのままのQStringということで、 QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForTr(codec); codec = QTextCodec::codecForName("euc-JP"); QTextCodec::setCodecForCString(codec); と、trとCStringに別々に*codecを渡せばOKでした。
- 215 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 14:46:34 ]
- >>213
そんなグローバルな設定変えなくても、QBufferからQStringを読み出すときに QTextStream をかませて、 QTextStream の setCodec() 使えば良いのでは?
- 216 名前:210 mailto:sage [2009/05/25(月) 15:20:01 ]
- QBuffer *buf;
QString answer; QTextCodec *codecEucjp = QTextCodec::codecForName("euc-JP"); という時に、 QTextStream str; str = buf->readline((qint64)size); str.setCodec( codec ); answer = str.read((qint64)size); ということでしょうか。 なるほど、これを書いていて211さんの返答がようやく理解できた気がします。 表現が私には文学的で理解ができなかったのですorz (QTextStreamじゃなくてQBufferから読みだしてるから、 setCodec()使えないよなぁ、と思ってしまってました) ありがとうございました
- 217 名前:215 mailto:sage [2009/05/25(月) 16:13:50 ]
- >>216
俺は PyQT ユーザーなのでリファレンス読んだだけの回答になるけど、 QTextStream strm((QIODevice*)buf); // キャストはたぶん要らない strm.setCodec("eucJP") QString answer = strm.readLine() 俺が「かませる」といったのは、こんな風に QBuffer を QTextStream で wrap することであって、QBufferから一行取り出してはQTextStream に コピーすることじゃない。
- 218 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 16:39:45 ]
- >>200
Linux/Windows の 4.4, 4.5 で確認。 Linux 4.4: 汚い Linux 4.5: 強調されず(Disabledな見た目ではないが、4.4ほどでもない) Windows 4.4/4.5: 汚い Linux の 4.5 は最初再現していたけど、 $HOME/.config/Trolltech.conf を消したら再現しなくなったorz バグっぽいけど聞いてみないとわからないかな。 直っても青い色が変わるわけでもなさそうなので効果は限定的かも。
- 219 名前:デフォルトの名無しさん [2009/05/25(月) 18:53:56 ]
- >>212
> Qt Createrの説明が無くてもおkなんですか? Qt Creatorは、IDEのひとつなのでなくてもやって行けます。 Qt 4を覚えるには、もうひとつはQt 3なので、Qt 4のこちらがよいです。 > Qt導入するということになったら、 > 自分が本読むだけでなくて、 > 本渡すだけでQt Createrの説明終わらせる方が楽なようなw Qt Creatorのマニュアルの翻訳は、Qt Creatorの日本語化プロジェクトで 行なわれているので、できるまでは英語で我慢して、入門Qt 4プログラミングを渡せば楽でしょう。
- 220 名前:210 mailto:sage [2009/05/25(月) 23:48:39 ]
- >>215
ありがとう、助かりました。 改行コードが取り除かれてることに気づかず、2時間悩んだのは秘密です(w オライリーのは版によっては誤植が多々あるので気をつけてください。 その点、原本は英語ですが割と読みやすいです。 そもそも技術書の英語は文学と違って先入観を捨てれば読みやすいと思う。 まぁ、こればかりはホントに主観だけど。 それと、チュートリアル本としてはあまりいい構成ではないと思います。 表計算ソフトのメインウィンドウのサンプルが長く、 しかも章を跨いで打ち込みをしないと、 実行してどう動くのか掴みにくいと思います…。 私の場合はそこで諦めて、後半はパラ見だけになってしまいました。
- 221 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 08:19:45 ]
- 最近流れ早いね。
書籍はC++ GUI Programming With Qt 4 Second Editionがあれば他はいらないと思う。 英語の本とはいえ英語が赤点だった自分でも理解できているので問題ないかと。 一応、Googleブック検索でFirst Editionが読めるので、試し読みしてみることをすすめる。 Qt Creatorはまだ出たばっかりというのと軽量IDEという方向性的なため 機能がシンプルなので特に迷うことなく使用できるはず。 まぁ、裏を返せば出来ることが少ないんだけどね。
- 222 名前:212 mailto:sage [2009/05/26(火) 08:53:55 ]
- >>219 221
了解。 Qt 4本買ってみます。(英語アレルギーの人が居るかもなので、日本語買うかも) Qt Createrは軽量IDEなんですね。 とは言っても、XCodeよりは賢い動作っぽいし(マカーが怒る?)、クロスプラットフォームなところが安心ですね。 wxDevC++で作成したコードをMACに送ってXCodeコンパイルやったら辛かった。
- 223 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 10:51:29 ]
- 英語でよければまずはこれ
ttp://www.qtrac.eu/C++-GUI-Programming-with-Qt-4-1st-ed.zip ttp://doc.qtsoftware.com/4.5/how-to-learn-qt.html からリンクが張られているQt4本の1st edition。 2nd editionを買う前に目を通すといい。
- 224 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 13:23:28 ]
- 1st editionのやつってサンプルコードどこかに公開されてたりはしない?
あくまでちゃんと本買ってCDROMからってことなのかな?
- 225 名前:デフォルトの名無しさん [2009/05/26(火) 19:33:52 ]
- GUIでマウスが置かれたところにチェックボックスがあったときに
周りを別の色で強調するようにしたんだけど FreeBSDではマウスをそこから離すと強調したところが真っ黒になってしまう これってQtじゃなくてグラフィックドライバの問題なんですかね
- 226 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 20:24:35 ]
- googleのブック検索で入門Qt4読めるよ。
C++GUI programing with qtもセカンドエディションがある。
- 227 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 09:03:06 ]
- dクス>>223 >>226
何これ、かなり読めちゃうね。
- 228 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:18:48 ]
- Qt Designerでダイアログにボタン等を配置してからサイズ調整すると
ダイアログのサイズが配置されているウィジェットを無視して最小にな ってしまいますが前からこんなんでしたか? ウィジェット群に適当なマージンをとってダイアログがリサイズされたと 記憶しているけども。
- 229 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 16:40:37 ]
- レイアウト設定せんとだめじゃね?
- 230 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 18:34:10 ]
- 全てのウィジェットは何らかのレイアウトに配置済み。
QVBoxLayout -QGridLayout -QWidget(4個) -QHBoxLayout -QWidget(2個)
- 231 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 21:13:23 ]
- どうもDesignerでダイアログをデザインすると、できるソース(ui_xxx.h))がおかしくないですか?
ウィジェットを色々配置して何らかのレイアウトを使うとui_xxx.hのclass Ui_xxxのメンバに無意 味と思えるQWidget*のインスタンスwidgetができるのですがなんでしょうね。
- 232 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 07:28:23 ]
- >>228 231
多分 designer のレイアウトの使い方が間違ってる。 top level widget にレイアウトを割り当てるときには レイアウトしたいwidgetをマークしてレイアウトを選ぶのではなく、 top level widget(この場合は最上位のDialog)を選んでレイアウトを選択する。 ( レイアウトを新たに作るのではなく、Dialogにレイアウトを割り当てる) Object Treeで Dialog の直下にレイアウトがないのに レイアウトが反映されている状態が正常。 Dialogのプロパティに Layout があるかどうかをチェック。 designerのこの仕様は正直わかりにくい。
- 233 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 12:09:46 ]
- それ、わかり辛いですね。
教えて頂き、ありがとうございます。
- 234 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 22:59:58 ]
- WindowsにてMinGWでビルドしたのですが、
QtCore4.dll,QtGui4.dll,QtNetwork4.dll,mingwの(名前忘れた).dll が配布時に必要ですよね。 これらのdllって、\qt2009.2\Qt\binから持ってくるべきですか? それとも\qt2009.2\binから持ってくるべきですか? それと、それらのexeファイルとdllの位置関係なのですが、 同じディレクトリに入れればいいのでしょうか。 プロジェクトファイルで指定ですか?? とりあえず、Qtの無い環境で、上のdll4つ、 同じ場所においてDependencyWalkerで走らせたのですが、 dllがないってエラー吐かれてしまいました。
- 235 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 06:41:36 ]
- >>234
debugでビルドしたものではありませんか? debugビルドした場合は、QtCore4d.dllなどの ファイル名が〜dとなっているDLLに依存しますよ
- 236 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 08:45:57 ]
- QWinWidgetクラスを使うとWin32APIとごちゃまぜで使えそうなんですが、
LinuxとかWindowsCEとかはどうやってごちゃ混ぜに書くんでしょうか?
- 237 名前:234 mailto:sage [2009/05/29(金) 12:24:15 ]
- releaseですね…。
debugでビルドしたものは4MB近くあるのに対して、 releaseでビルドしたものは100KBなので、間違いないです。 ちなみに、プロジェクトファイルは以下のようになっています。 TEMPLATE = app TARGET = ./bin/myApp DEPENDPATH += ./src INCLUDEPATH += ./src
- 238 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 12:56:04 ]
- >>234
具体的にどのdllがないっていわれる? 簡単なアプリなら app.exe QtCore4.dll QtGui4.dll mingwm10.dll だけでうごいてるけど。 画像を扱う場合などは plugins の下を適当にコピーして場所を設定する必要があるかも。 ただし、この場合のエラーは別の原因だと思うが。
- 239 名前:234 mailto:sage [2009/05/29(金) 13:27:23 ]
- Dependency Walker下で実行すると、
MSJAVAとかを抜きにすれば、 QtCore4.dll QtGui4.dll QtNetwork4.dll mingwm10.dll のすべてが赤い表示になってしまいます。 画像はpngファイルをアイコンとして使っていますが、 仰っているように、 GUI表示されたときにきちんと表示されているので、 問題は他にあるのでしょう。
- 240 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 14:09:13 ]
- Vista(Qt SDK はインストールしたがPATHは通ってない状態)で
app.exe だけある状態で Dependency Walker (2.2) を動かすと MINGWM10.DLL, QTCORE4.DLL QTGUI4.DLL がないと言われる。 app.exe と同じディレクトリに上記の3つのDLLをコピーすると問題なし。 (WARNINGはあるが、動作する)。 コピー元は C:\Qt\2009.02\qt\bin その場合にツリー表示されているDLLは KERNEL32.DLL, MSVCRT.DLL, MINGWM10.DLL, QTCORE4.DLL, QTGUI4.DLL の5つ。後ろの3つ(or +QTNETWORK4.DLL)をコピーすれば、うまくいくはずだが…。
- 241 名前:234 mailto:sage [2009/05/29(金) 14:19:37 ]
- >240
ありがとうございます。 プロジェクトファイルでの記述は無関係でしょうか?? リファレンスを読む限りでは、 同一ソリューション内の別プロジェクトに、 依存する場合は云々と書かれているので、 おそらく関係ないんでしょうね…?
- 242 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 14:31:19 ]
- >>241
ビルドできていれば問題ないとは思うけど。 proファイルはこれだけ(Creatorで作成)。 app_bundle は Macにしか効果がないようなのでCONFIGはほぼ無関係。 TARGET = app CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp そこそこ規模のあるアプリで試しているようなので、 簡単なものでチェックしてみては。
- 243 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 15:58:28 ]
- Qtで簡単 GUIプログラミング―Qt入門書を読む前に読む「入門書」
ttp://www.amazon.co.jp/dp/4877832211/ こんな本出てたんだなとおもったら、いきなり評価☆一つとはw
- 244 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 16:04:35 ]
- しかしこの評価もなんだかなぁ
この人にとっては役に立たなかったんだろうけど まぁ俺にも役立ちそうに無いが
- 245 名前:234 mailto:sage [2009/05/29(金) 16:11:11 ]
- 簡単なHelloWorldでもダメでしたorz
ビルド環境にも問題があるような気がしてきました。 Athlon64マシンにWindowsXP32bit版、MinGW32でビルドした場合、 動く構成はどのようになるのでしょうか。
- 246 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 18:48:30 ]
- 俺のとこはMingwでもvisual c++でも動くけどなあ。
linuxのgccでも動く。 セロリンだけど。
- 247 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 18:51:21 ]
- 思いついた!dllへのパスが通ってないんじゃね?
- 248 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 03:01:14 ]
- Windowsのファイルのプロパティで出力されるバージョン情報を扱うクラスはありますか?
setApplicationNameやsetOrganizationNameがそれだと思ったのですが違うようで。
- 249 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 11:35:32 ]
- >>248
そういう機能はqmakeの方だな。 ttp://doc.qtsoftware.com/4.5/qmake-variable-reference.html#version
- 250 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 12:11:10 ]
- >>249
VERSIONは与えられました。 qmakeの変数には見当たりませんが会社名等は扱えないのでしょうか? MFCのリソースのようなものがあれば良かったのですが。
- 251 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 13:40:42 ]
- Win32リソースのことだろ?
そういうのはwindresを使うものと思ってたが
|

|