1 名前:デフォルトの名無しさん [2012/02/18(土) 11:01:17.97 ] 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 を選んだ場合はソースコード非公開のままでの商用利用が可能です(いくつか制限あり)。 ※正確には通常「LGPL+商用利用向きの例外条項」を選ぶことにな7ります(Qtインストール先の「LGPL_EXCEPTION.txt」を参照)。 ちなみにGPLでも商用利用が不可能というわけではありません、念のため。 ・商用版(Commercial version) こっちはNokia社か日本の代理店(SRA社)とライセンス契約(年間30万くらい?)を結んで使います ■Qt を使って作られたソフト例 KDE、Adobe Photoshop Elements、Google Earth、Skype、DAZ Studio など ■前スレ 【RAD統合環境】 Qt 総合スレ 12 【Win/Mac/Linux】 toro.2ch.net/test/read.cgi/tech/1313727889/
175 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 20:55:39.90 ] QtスレっちゅうかQtドキュメント探すスレやな ttp://qt-project.org/doc/ ttp://doc.qt.nokia.com/ を含むレス数がQt力や
176 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 15:45:01.71 ] そして時は動き出す
177 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 17:24:58.39 ] −−−−−−−−−−−−−−−−終了−−−−−−−−−−−−−−−−
178 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 01:38:53.36 ] QMLなんかより本体の方をまともにしてくれ
179 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 06:25:32.67 ] 最近Qt始めたんだけど、そんなにバギーなん?
180 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 06:47:52.89 ] 別にバギーじゃないお
181 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 06:48:54.32 ] 問題が多いだけ
182 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 20:39:12.68 ] Qt4にやっと慣れてきたレベルの初級者です。 現在、ジャンルごとにタブで表示するログ閲覧用のエディタを開発しております。 QPlainTextEdit での巨大ファイルの処理に関してアドバイスをいただけないでしょうか。 実現したいことは、「 QPlainTextEdit のレスポンスは遅くてもいいので、 それより上位の Widget のレスポンスは早くしたい」ということです。 現在の処理は (1) Worker Thread で file から read (2) buffer(QString) につめこむ (3) 一定量溜まったら、Signal を emit (4) main thread の Slot でそれを受け取る (5) plainTextEdit に appendPlainTextでバッファのStringを追加. (6) (1)に戻る という流れにしてみたのですが、どうやら(5)の工程が遅いらしく、 main の GUI がファイル読み込み中に freeze します。 (試しに appendPlainText をコメントアウトしたところ、freeze はしなくなりました) Widget自体を別スレッドにすることは、どうやらできなさそうなので、 plainTextEdit を別スレッドにするという対処はできそうにありません。 qt-project.org/forums/viewthread/4002 そのため、完全に手詰まり状態となってしまいました。 もしよかったら freeze を防ぐための アドバイスいただけないでしょうか。
183 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 21:40:40.22 ] 一定量溜まったら、ってどのくらい? KB単位なのかMB単位なのか あまりでかいのなら見えてるところだけappendして遅延ロードさせるとか
184 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 22:17:30.28 ] >>183 Line base なので 10000行ごとにロードしています。 appendの処理が重いため、この量が少ないと処理時間が伸びました。 遅延ロードも検討したのですが、私のプログラミングスキルだと、 利便性と兼ね合いを持たせて実装する仕組みを思いつきませんでした。 他のエディタのアルゴリズムとか調べてみると発見があるかもしれないですね。 アドバイスありがとうございます。
185 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 23:06:01.11 ] 本質的ではないのですが、appendPlainText を insertPlainText に変えて、 このページにあるように SyntaxHighlighter をロード中に切ると、 処理時間が半分程度になりました。 https://qt-project.org/doc/qt-4.7/QSyntaxHighlighter.html (もともと SyntaxHighlighter はロード中は「内部で即return」 するようにしていたので、 あまり影響はないですが。。。)
186 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 14:20:40.74 ] Qt Creatorってemacsのキーバインドないの?
187 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 15:03:47.18 ] 少なくともデフォルトではないんでなかったか キーボードの挙動は結構自分で変えられるから試してみてはいかがか
188 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 22:14:23.21 ] Qt CreatorとかQt Assistantのアイコンがそっくりすぎる もう少しぱっと見てわかるようにならないかな
189 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 05:29:06.19 ] 馬鹿には無理
190 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/03/29(木) 23:37:45.82 ] 今Twitterのクライアント作っててGUIにQt4を使っています。 TLを表示する時、Twitter側からつぶやきの情報を取得して QLavel作成して描画しようと思っているんですが、 ツイートの文字数、ウィンドウの大きさによってラベルの高さを変えたいです。 リファレンスがわかりにくくてよく分からなかったんですが setGeometry関数は横の長さだけ指定して 縦を自動調整してくれるようにできるんでしょうか。 できないなら方法ないでしょうか。 丸投げな質問ですいません。
191 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/30(金) 00:31:51.58 ] heightForWidthとか
192 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/03/30(金) 00:34:47.49 ] >>191 今調べられる環境では無いですが 多分引数intで縦の長さ決定する関数ですね。 その逆って無いですか?
193 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/30(金) 09:00:57.21 ] QTableViewとは違うエリアで変化したデータの変更を、すぐにQTableViewの描画に 反映することってできますか? 今、設定された値によってテーブルの背景色を変化させるようにしていますが、 違うウィンドウで値を変えても、すぐに描画が反映されず、 QTableViewが貼りつけてあるウィンドウに行って、クリックとか何かイベントを 起こさせないと反映されません。 わざわざそのウィンドウに行かずに、すぐに反映されるようにするにはどうしたらいいんでしょうか?
194 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/30(金) 09:24:23.35 ] >>193 QTabView を update() してる?
195 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 04:20:48.74 ] Qtはいつまで32bitしか配らないのか? 自前でビルドするとエラー出るし
196 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 09:47:18.31 ] ん?Linuxはx86-64版を配布しておるが。Windowsの話か?
197 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 10:26:51.67 ] Mac版も64bitだな
198 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 14:15:56.23 ] Win版も非公式ビルドなら、4.8.0のx64がGoogle Codeにある
199 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 14:18:33.15 ] もしかしてこれのことかね? code.google.com/p/qt-msvc-installer/
200 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 09:39:43.22 ] 重たい処理をしてる最中の描画がうまく働かず、GUIの一部がうまくアップデートされない状態に時々ならないですか? その箇所をアップデートするようなイベント(クリックとか、マウスオーバーとか)で元に戻るんですが、 放置しておくと永遠に見えないままです。 定期的(1000ms間隔ぐらい?) な MainWindow のリフレッシュとかが必要なんですかね。。。 Macだとこの問題は発生しないのですが、Windowsだと起きます。
201 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 14:38:00.95 ] >>200 > 重たい処理をしてる最中の描画がうまく働かず、GUIの一部がうまくアップデートされない状態に時々ならないですか? イベントハンドラで重たい処理をしてれば、イベントループが回らないので GUIがうまく更新されないのはしょうがないんじゃないかい? 重い処理は別スレッドで処理しないと駄目なんじゃないかな
202 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 15:09:12.57 ] よく分からんのですが、qtのオープンソース版ってひとつしか頒布されてなくて、 (自分がインストールしたのはこれです → Qt by Nokia v4.8.0 (MinGW OpenSource) ) >>2 のLGPLライセンスだと思って使ってもいいってことですか? つまり、LGPLライセンス用とGPLライセンス用の2種が存在するわけではないですか?
203 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 15:21:08.19 ] GPL、LGPU好きな方で使える
204 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 15:33:35.09 ] あ、即レスありがとうございます
205 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/01(日) 18:08:32.63 ] 初歩的だと思いのですが、質問させてください QtCreatorを使っており、ui_mainwindowを読み込んだ MainWindowクラスがあります。 uiではMainWindowウィジェットの子ウィジェットとしてQTabWidgetクラスのtabsウィジェットが 設定されています。 このtabウィジェットに対して色々な処理を加えたい (コンテキストメニューでタブを追加したり消したりするような処理など) 時に、この処理をMainWindowクラスに書くのは何かちがうのかなと思ったのですが、 別個にTabsクラスを作って、それにtabsを渡して色々処理するようにしようと思ったのですが セオリー的にはどうなっているのでしょうか 教えていただけますと嬉しいです
206 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 20:51:51.75 ] Tabsクラスにtabsを渡すって何?
207 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 22:12:58.87 ] >>205 コンテキストメニューでタブを追加するという処理なら、 ・コンテキストメニューを作ってQActionをアサインする ・QAction::triggered()シグナルをMainWindowクラスで受け取る ・追加するtabをQWidgetで作成(もしくはあらかじめ作る) ・ui->tabs->addTab()で追加する で鉄板だと思うのだが、好きにやってみたらいいんじゃね?
208 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 00:24:56.43 ] >>201 GUI に依存する重たい処理なんで、別スレッドに対比できないんですよね。 QWidgetの派生クラスの「1行の関数呼び出し」がえらい負荷をかけているらしく、 要素の分解もできない状態です。 具体的には、以前相談させていただいた QPlainTextWidget の String の追加処理(insertPlainText)を、高速化できないので、 (1) テキストを追加 (2) 重くなる (3) GUI がアップデートされない (4) TextEdit 以外の 他のGUIイベントが発生しても、それが反映されない (5) タッチされるまで見えないまま という状態になっています。 QMainWindowの派生クラスで Thread を持ち、それが while(true){ msleep(1000); emit windowUpdateSignal; } という形で、アップデートをかけ続けるという動きを考えたのですが、 あまりイケてなさそうな気がして。。。
209 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 00:54:38.58 ] エスパーじゃないんでよくわからんが、QStringの扱い方がまずいんでないの? コピーしまくってたりとか、変なループ回して同じ処理を何度も繰り返したりとか。 メッセージが回らなくなるレベルの重さなんて、今時の環境だったらよっぽど無駄なことしないと難しいよ。
210 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 07:15:50.94 ] ループの中に QApplication::processEvents() を入れるとか、そういう話じゃない?
211 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 08:19:06.11 ] >>209 QStringの扱いがまずいというのはあるかもですね。 本来、QPlainTextEditは大量の文書を入れる用途には向いていないようなのに、 数十万行程度読みこませることがあるので。。。 あと、signal の送受信の際に、内部的にQStringを何度もコピーしている可能性も 考えたほうがいいかもしれないです。。。 >>210 それも以前試したのですが、目に見えた改善はなかったです。 ううむ。
212 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 10:00:08.79 ] 試してないが、QTextDocumentを別スレッドで作って、 そこにテキストを設定した後にQPlainTextEditにsetDocumentする手は使えない? QTextDocument::clone() を使ってコピーする必要はありそうだが。 qt-project.org/doc/qt-4.8/threads-modules.html#threads-and-rich-text-processing 動的にテキストが更新されていく場合は難しいかもしれないが。
213 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 10:06:18.35 ] >>211 > 本来、QPlainTextEditは大量の文書を入れる用途には向いていないようなのに、 > 数十万行程度読みこませることがあるので。。。 それが問題だと思う。 巨大文書用のエディタクラスを作るしかないかも。 #仕事として発注してくれれば受けるけど、そこまでコストかける気はなさそうだね
214 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 14:08:43.81 ] >>211 >あと、signal の送受信の際に、内部的にQStringを何度もコピーしている可能性も >考えたほうがいいかもしれないです。。。 QStringはコビーオンライトするようになっているので、ポインタサイズしかコピーしていません。
215 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 17:47:45.85 ] >>205 QtCreatorで配置したオブジェクトに任意の処理を加えたいって ことならオレはこうしてる。 これならQMainWindowクラスに記述するコードは必要最低限に なるかな。 void MainWindow::on_actionOpen_triggered() { MyArea *localarea = centralWidget()->findChild<MyArea *>(); if (localarea!=0) { localarea->on_actionOpen_triggered(); } }
216 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 17:58:41.07 ] ながれをぶったぎってすみませんが、 Qt4.8.0以降でOpenGLを使う場合、glutをincludeしなくなっているので gluLookAt()が使えません。そうすると、自前で視点変換の行列を 用意しなければならないのですか。それとも代わりの関数がどこかの クラスに用意されているのでしょうか。
217 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 19:05:22.68 ] #include <GL/glu.h> を追加すればいいんでないの ttps://bugreports.qt-project.org/browse/QTBUG-12227 そういう問題じゃない?
218 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:33:42.11 ] >>217 なるほど。たしかにglu.hでうごくみたいですね。 <QtOpenGL/QGLWidget>のなかでgl.hしか読み込んでいなかったので そうしようと思いませんでした。 リンクによると、Qtではglutを使わない方針になっているんですね。
219 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:44:55.49 ] >>218 Qt4.8から使い始めたから知らなかったけど、 includeしてたのってGLUTじゃなくてGLUじゃない? OSXはこんな感じで書けばいいみたい ttp://qt-project.org/forums/viewthread/14269
220 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 23:24:29.17 ] Directorry に対する FiliInfo の absolute path 系って Mac と Windowsで挙動が違うみたいですね。 fileInfo.absoluteDir().absolutePath() とやった際に、 Macだと 自分のディレクトリを含んだパスを返し、 Windowsだと 親のディレクトリのパスを返しました。 fileInfo.absoluteFilePath() だけだと、Mac は最後に / がついて、 windows は / なし。 dirPath = fileInfo.absoluteFilePath(); if(dirPath.endWith("/"){ dirPath = dirPath.left(dirPath.length() - 1); } のような形で、両者の違いを吸収できました。 ただ、数千行書いて、初めて処理結果の食い違いが出てきたレベルなので、 やはり汎用性が高いですね。 あと、nullを間違えて addWidget した時の挙動も若干違いましたが。
221 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 23:44:06.97 ] >>213 ググったら似たようなトラブルが山のように出てきたので、 おそらくそうですね。 プロっぽい人の回答だと、 1) オンラインのログのようなものなら、組み込み機能の行数制限を使って、古い行を上から自動で消す 2) ページングに細かくぶったぎる というのがよく見られるパターンでした。 私も趣味で開発(タダ)してるんで、金はかけられないですw 巨大文書用のエディタクラスですか。。。 作るならQPlainTextEditと上位クラスのコード読まないと無理そうですね。
222 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 23:52:48.62 ] >> 212 ああ、それいいかもですね。 setTextDocument の スピード について main thread で検証してみて、 それが速ければ試してみる価値がありそうです。 結果は後日報告します。ありがとうございます。 いやー、随分悩んだのですが、相談すると自分が考えつかないような 解法を色々教えていただけて、助かります。
223 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/03(火) 23:10:53.31 ] Qt 5 Alphaリリースしました
224 名前:108 [2012/04/04(水) 03:52:13.17 ] Qt5では、簡単に言うと何がいいのでしょう?
225 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 11:48:51.05 ] >>224 qt-project.org/wiki/Qt-5-Alpha
226 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 18:19:44.50 ] >>225 もう和訳でてる labs.qt.nokia.co.jp/2012/04/04/qt-5-alpha.html
227 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 22:29:23.76 ] >>199 これつかわないと64ビット版のwindows向けにビルドできないのでしょうか???
228 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 00:22:05.26 ] >>227 WOW64でいいなら使わなくてもよいでしょう
229 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 00:25:37.15 ] 組み込みでもOpenGL使えるのかな
230 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 01:36:43.32 ] >>229 ドライバがあれば、な。
231 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 07:58:01.23 ] >>229 Qt 4ではドライバがあっても問題が多過ぎて満足に使えませんでした。 問題を報告したら、今のアーキテクチャではもう無理なので、Lighthouse迄待ってくれと言われました。 Qt 4.8のLighthouseのOpenGLドライバは、問題がまだあるけれどそこそこ動きます。
232 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 11:05:12.73 ] みなさんって Qt4 を Windows か Mac、Linux もしくは 複数のどれで利用しています? アプリケーションの大枠としてはだいたい同じ挙動になりますが、OSごとに若干GUI系のレスポンスが違いませんか。。。 Windowsだけ、このWidget_Aが遅くてアップデートがうまく動かないとか、 Macだけ、このWidget_Bが遅くて、もっさりしているとか。 Windowsだけ、QLineEdit(コピペしたときの見た目が更新されない), と QTreeWidget(1クリックでフォーカスが表示されない) のアップデートが遅く、 Mac だけ QTreeWidget の plasticStyle がもっさり(カクカク)しています。 解消したいんですが、OS特有なんで原因がよくわからないんですよね。。。
233 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 22:26:04.52 ] >>232 ここ数年こういったQtの実装の不十分さが目立って来ています。 報告しても、古いからもう改善しないとクローズされるのが何度もあって、言う気も失せています。
234 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 00:50:31.53 ] そのへんはしかたないと思うけどね。 Javaとかと違ってネイティブで動くことに意味があるんだし。
235 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/08(日) 00:55:01.74 ] QMLの不具合は報告するとすぐさま修正されるよ QWidgetは放置されるけど
236 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 11:16:36.41 ] 馬鹿には無理
237 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 11:44:19.69 ] オプソは総じて、過去の遺産のメンテみたいな面白くもないことはしたがらないからな 自分で直すか有償サポート申し込めってことだな
238 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 12:35:16.58 ] オープンソースといってもNokia関係者が8割だそうだ。
239 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/09(月) 12:59:20.02 ] NokiaはQMLで何がしたいんだろう?
240 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 17:20:24.03 ] Qtで作ったMeeGoを捨てて、Windows Phoneに寝返ったNokiaに、 もう一度Qtの開発者達へ目を向けさして、Nokiaのメインストリームにして欲しいんじゃないかな。
241 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 22:51:02.32 ] Qtの GUI 系のアップデートって、メソッドの呼び出し順序で挙動が変わりますね。 QPlainTextEdit を拡張して、左側にラインナンバーを表示させているのですが、 再定義を以下のようにすると paintEvent(QPaintEvent *e){ lineNumberArea->repaint(); <--- (1) QPlainTextEdit::paintEvent(e); <--- (2) } Editer本体の描画がうまく動かなかったのですが、 この(1)(2)を逆にしたら問題なく動くようになりました。 重要なイベントを先に動かしたほうがいいみたいですね。
242 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 23:06:09.30 ] 単に理解できてないだけなんじゃね
243 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 23:11:35.16 ] それは単純に、(2)が上書きしているからじゃないの? Widget が透ける設定じゃなけりゃ、塗りつぶすでしょ。
244 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 23:33:02.87 ] >>243 PlainTextEditの描画を少し右寄せして、空いた隙間にライン描画のための QWidget を配置しています。 両者は重なっていないので、塗りつぶしは発生しないです。 ペイントイベントが半動きのようになっていて、以下のような症状がでていました。 - スライダーを動かすと、上下 20 % が空白になる - 停止すると Editer が真っ白 - クリックすると、描画され文字が確認できる - カーソルを動かすと、現カーソル行だけが空白 - 左側 30%ほどしか描画されない 上記は全て同時に発生するのではなく、このうちのいくつかが複合的に起きていました。 Win/Macともに問題なかったコードを、Macでコードをリファクタリングしたあとに、 Windowsで動かすと急に上記のような症状が現れて焦りました。 きちんと両方で検証しながらコードの修正変更を加えないと危ういですね。。。
245 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 00:28:09.75 ] >>244 >PlainTextEditの描画を少し右寄せして どのようにして右寄せにしていますか。
246 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 14:09:33.70 ] なんでupdateじゃなくてrepaintなの? あと qt-project.org/doc/qt-4.8/qwidget.html#paintEvent の > Generally, you should refrain from calling update() or repaint() inside a paintEvent(). > For example, calling update() or repaint() on children inside a paintevent() > results in undefined behavior; the child may or may not get a paint event. は関係あるのだろうか
247 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 23:00:20.51 ] >>245 setViewportMargins(x, 0, 0, 0); ですね。 >>246 QPlainTextEdit の 継承クラスの中に QWidget(ライン番号表示)を持っていたのですが、 両者のアップデートのタイミングが異なっており、「行番号がアップデートされずに、 実際の行と食い違いがある」という状態になっていました。 なので、継承クラスで PaintEvent をオーバーライドし、 「本来のPaintEvent + 同時にアップデートされなかったWidgetのアップデート」 を行うようにしています。
248 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 23:01:56.89 ] 伝え忘れましたが、行番号はSQroll範囲全てにあるわけではなく、 現在見ている Window範囲にしか存在せず、必要に応じて行番号を アップデートする仕組みで動作しています。
249 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 23:04:30.55 ] >>246 どっかのドキュメントで 「update ではなく、repaint を呼び出すべき」というのを見かけ、 それを盲目的に信じていました。 申し訳ないですが、一ヶ月近く前の話なので覚えていないです。ごめんなさい。
250 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 23:14:29.07 ] lineNumberArea実装の例はQtのサンプルに含まれてるよ 俺はそれ参考にして実装してる
251 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 23:20:05.39 ] >>244 >塗りつぶしは発生しないです どうやって確認したの?
252 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 23:21:17.23 ] Code Editor Example | Documentation | Qt Developer Network qt-project.org/doc/qt-4.8/widgets-codeeditor.html
253 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 23:45:22.15 ] >>250 ,252 私もこれを参考にしました。 LineNumberAreaの行番号表示のアルゴリズム と、QPlainText の共存方法自体はほぼ同じです。 ただ、描画イベントの処理系はサンプルのままだとうまく動かなかったので、変更を加えています。 あと、他機能との実装の兼ね合いもあるので。。。 >>251 エリアがかぶっていないからです。 <--LineNumberArea-> <----(blank)--------------|----QPlainTextArea--------------> というような感じですね。
254 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 23:48:57.16 ] 結局、Qtのせいではなくて理解が足りなかったということでおk?
255 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 00:04:59.07 ] >>254 私はエキスパートはおろか、本業プログラマですらないので、 Qtの問題性を疑うより私の理解不足を疑うほうが妥当だと判断します。 ただ、文脈を持たないその指摘に、なんの意味があるかがよく分かりません。 低レベルな質問でスレ汚しをするな、という指摘なら謝ります。
256 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 08:29:10.49 ] >>255 > 私はエキスパートはおろか、本業プログラマですらないので、 > Qtの問題性を疑うより私の理解不足を疑うほうが妥当だと判断します。 以下の文章は自分の理解不足を疑った方がいいと判断している人の 文章には思えないのだが 理解不足の人が知ったかぶって不完全な知識をひけらかしているように読めた > Qtの GUI 系のアップデートって、メソッドの呼び出し順序で挙動が変わりますね。 > QPlainTextEdit を拡張して、左側にラインナンバーを表示させているのですが、 ===中略=== > 重要なイベントを先に動かしたほうがいいみたいですね。
257 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 20:21:10.84 ] 煽るより正しい情報を書き込めよ
258 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 22:10:03.60 ] 実践 Qt 4プログラミング www.oreilly.co.jp/books/9784873115078/ 目次 推薦のことば 序文 本書で使用されている表記規則 意見と質問 謝辞 1章.デスクトップ用ハイブリッドインターネットアプリケーション 1.1 インターネット指向ウィジェット 1.2 WebKitの適用 2章.オーディオとビデオ 2.1 QSoundと QMovieの適用 2.2 Phononマルチメディアフレームワーク 3章.モデル /ビュー.テーブルモデル. 3.1 Qtのモデル /ビューアーキテクチャ 3.2 テーブルに対する QStandardItemModelの使用 3.3 カスタムテーブルモデルの作成
259 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 22:10:25.48 ] 4章.モデル /ビュー.ツリーモデル. 4.1 ツリーに対する QStandardItemModelの使用 4.2 カスタムツリーモデルの作成 5章.モデル /ビュー.デリゲート 5.1 データ型固有のエディタ 5.2 データ型固有のデリゲート 5.3 モデル固有のデリゲート 6章.モデル /ビュー.ビュー 6.1 QAbstractItemViewのサブクラス化 6.2 モデル固有の可視化を行うビュー 7章.QtConcurrentを用いたスレッド化. 7.1 スレッド内での関数実行 7.2 フィルタとマップによるスレッド分散 8章.QThreadを使ったマルチスレッドプログラミング 8.1 独立データの処理 8.2 共有アイテムの処理 9章.リッチテキストエディタの作成 9.1 QTextDocumentの概要 9.2 カスタムテキストエディタの作成 9.3 リッチテキスト単一行エディタ 9.4 複数行リッチテキスト編集
260 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 22:10:54.60 ] 10章.リッチテキストドキュメントの作成 10.1 QTextDocumentから書き出したファイルの品質 10.2 QTextDocumentの作成 10.3 ドキュメントの書き出しと印刷 10.4 ページを描く 11章.グラフィックス /ビュー.ウィンドウの作成 11.1 グラフィックス /ビューアーキテクチャ 11.2 グラフィックス /ビューウィジェットとレイアウト 11.3 グラフィックスアイテム入門 12章.グラフィックス /ビュー.シーンの作成 12.1 シーン、アイテム、アクション 12.2 QGraphicsViewの拡張 12.3 ドックウィジェットツールボックスの生成 12.4 カスタムグラフィックスアイテムの作成 13章.アニメーションと状態マシンフレームワーク 13.1 アニメーションフレームワーク入門 13.2 状態マシンフレームワーク入門 13.3 アニメーションと状態マシンの結合 終わりに 精選参考文献 索引 オライリーの新刊は内容的に入門書ではないね。 マルチメディア系てんこもりで期待大。
261 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 22:21:57.74 ] エディタの所のカスタムテキストエディタは、1行エディタとかやってるとこからして IME周りからやってくれるのかな?だとしたらほしいなあ。よくわかんないし
262 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 01:23:36.35 ] 翻訳元これかな、サンプルコード見るとそこまで凝ったエディタでもなさそう Advanced Qt Programming www.qtrac.eu/aqpbook.html
263 名前:デフォルトの名無しさん [2012/04/12(木) 01:35:00.34 ] QTextEditの使い方の説明だよ
264 名前:デフォルトの名無しさん [2012/04/12(木) 08:36:37.86 ] Mac OS-X Lion 10.7.3 に Qt SDK 1.2.1 をインストールしようとすると、 C++ コンパイラが無い、Xcode の最新版をインストールしろと言われます。 Xcode 3.2 を既にインストール済みだったので uninstall-devtools で消し、 Xcode 4.3.2 を App Store からインストールしました (/Application/Xcode.app が出来、空の Cocoa プロジェクトがビルド出来る ことを確認しました) しかし、Qt SDK 1.2.1 をインストールしようとすると、以前と同様に C++ コンパイラが無い というダイアログが表示されます。 どうしたら SDK をインストール出来るのでしょうか?
265 名前:264 mailto:sage [2012/04/12(木) 08:38:46.24 ] すみません訂正です。 誤:/Application/Xcode.app 正:/Applications/Xcode.app
266 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 08:56:20.72 ] >>264 頑張ってこのスレ読み返せば解決する
267 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 09:25:27.01 ] >>266 > 頑張ってこのスレ読み返せば解決する 情報ありがとうございます。xcode で検索して >>166 を発見しました。 >>166 > 需要は無さそうですが、解決したので念のため。 いえいえ、需要大有りです。大変助かりました。 ありがとうございます。 今、Qt SDK 1.2.1 をインストール中です。C++ が無いというエラーダイアログ は出なくなりました。
268 名前:デフォルトの名無しさん [2012/04/12(木) 13:58:42.21 ] Mac で QTextEdit に(フォントはデフォルトのまま)日本語の文字を入れると、 行が下に少しずれるのですが、これはそういうものなのでしょうか? ずれないように対処する方法がありましたら、ご教授ください。 よろしくお願いします。
269 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 22:22:44.26 ] Threadの継承クラス以外で sleep 関数に類似する関数は使えないのでしょうか。 QMainWindow を close する際に、child thread (無限ループ)を終了させたいです。 closeEvent を継承して、その中で以下のような形で実装するつもりだったんですが、 QThread::sleep() は protected だとコンパイラに怒られてしまいました。 アドバイスいただけないでしょうか。 thread->terminate(); while(true){ sleep(100); if(thread->isFinished()) break; } QTest に sleep があったのですが、これはとりあえず保留しています。
270 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 22:46:34.89 ] sleep の問題の解決になっていないのですが、threadの終了を待つには thread->terminate(); while(!thread->isFinished(){ QCoreApplication::processEvents(); } で十分でした。 マシンによると思うのですが、うちのやつだと100回以内にループを 抜けていたので sleep するレベルではありませんでした。
271 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 22:53:29.53 ] wait()だろ普通
272 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 23:09:12.95 ] >>271 wait() って、そのインスタンスに走らせたスレッド(runが動いているやつ)を止めるのではなく、 呼び出し元のを止めるんですね。。。 wait()を使うことにします。 ありがとうございました。
273 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 23:17:50.70 ] wait()はメインスレッド止まるけど、while使うとQCoreApplication::processEvents()呼ぶから画面がぬるぬる動くんじゃね
274 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 07:31:31.12 ] >>270 QTimer::singleShot()で呼び出されるスロットで、スレッドの終了判定をするというのはどうでしょうか。 スレッドが終了していなければ、singleShot()を再度呼び出す。 ビジーループにならず、wait()でメインスレッドが固まるのも避けられます。
275 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 09:40:19.86 ] >>269 >Threadの継承クラス以外で sleep 関数に類似する関数は使えないのでしょうか。 QTest::qSleep()は別として、メインスレッドでsleep関数に類似するものを使うとGUIが固まるので、 敢えて用意していません。