[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 06/15 14:02 / Filesize : 170 KB / Number-of Response : 630
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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/

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が固まるので、
敢えて用意していません。

276 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 13:22:55.99 ]
QTimerだとかで小細工しなくても、こんなんで十分じゃね?
while(!thread->wait(300))
{
qApp->processEvents();
}

277 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 00:11:59.16 ]
270です。

>>273
確かにそうですね。挙動として問題がないので、結局この実装のままにしています。

>>274
closeEvent 内部で終了を待ちたかったので、今回の処理はそれは利用しませんでした。
その方式が一番 GUI に負担が少なくていいですよね。

>>275
sleep に関わらず main thread で時間がかかる処理はやらせないほうが無難みたいですね。。
入門書にあった基本中の基本ですが、頭から抜けていましたw

>>276
wait()のみと、while 方式の両方のいいとこをとったような実装ですね。
while内の判定がスマートw

278 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 00:54:10.88 ]
Macでアプリの配布ってどうやります?
Deploying an Application on Mac OS X
qt-project.org/doc/qt-4.8/deployment-mac.html
という記事を見つけましたが、もっと簡単にやる方法があったら教えてもらえないですか?
できれば Qt Creator からそのまま出力したいです。



279 名前:デフォルトの名無しさん [2012/04/14(土) 03:57:34.72 ]
質問させてください。

QtCreator のアクションエディタで生成したQAction(button1)をQToolBar(toolBar)の
部分にドラッグアンドドロップして、
toolBarからそのbutton1を取得したいのですが、

QAction* button1 = toolBar->findChild<QAction *>("button1");

としてもヌルポインタが返ってきてしまうようです。

QtCreatorのデザイナーの右にあるパースペクティブでは、
ツリー構造でbutton1はtoolBarの子供のような感じになっているのですが、
uiファイルのxmlを見てみると親子関係になっていないようでしたので
これがfindChildで取れない理由だと思うのですが、
どのようにすればbutton1のactionを取得できますでしょうか。

280 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 09:03:04.90 ]
countとかすると、0じゃない値が帰ってくる?
ワンラインで取ろうとせず、どの行程でコケてるか調べてみたら。

しばらく使ってないから忘れたけど
menubar -> menu -> action
って親子関係じゃなかったっけ?

281 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 09:04:22.15 ]
あ、ごめん。menubar じゃなくて toolbar か。

282 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 09:17:00.41 ]
ui->button1とかでアクセスできるだろ

283 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 10:52:39.37 ]
馬鹿には無理

284 名前:デフォルトの名無しさん [2012/04/14(土) 11:42:54.59 ]
AccessとQtは同じくらい面白い。

285 名前:279 [2012/04/14(土) 12:36:13.14 ]
レスありがとうございます。

uiを色んなモジュールで引き回しまくるのが嫌なので、できればtoolBarから取得したいのですが、なんとかならないものでしょうか。

QTでは普通、どのモジュールからもuiオブジェクトから個々の部品オブジェクトにアクセスするものなんでしょうか

286 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 12:38:25.90 ]
他のMacで動くか試していないですが、以下のコマンドを使うと Mac で
アプリをデプロイできそうです。

# which macdeployqt
/usr/bin/macdeployqt
# cd /usr/bin/
# ./macdeployqt /PASS_TO_APP/myapp.app
※ myapp.app は Qt Creator で作ったアプリ

これをやると、myapp.app が 1M ぐらいから 35M ぐらいに膨らんで、
パッケージの中にライブラリが色々と入っていたました。




287 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 12:46:35.96 ]
>>285
その部分だけ ui じゃなくて、コードを使って GUI を作ったら?
そしたら、toolBar から簡単に子供を取れるんじゃないかな。

288 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 13:39:19.28 ]
じゃあ、toolbar->actions()から自分で検索すれば?



289 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 14:11:50.67 ]
スレチかもしれんが、286のついでに。

Mac で Qtで作ったアプリにアイコンをつけたければ、
myapp.app/Resources/ に xxx.icns を追加。
info.plt を 開いて、追加したアイコンを icon に設定。

アイコンのファイル icns を作るには、Img2icns というアプリが便利だった。
www.macupdate.com/app/mac/18369/img2icns

290 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 14:13:37.19 ]
ちなみに、286 の方法なのですが、snow leopard でコンパイルしたものは、
qt4 をインストールしていない lion で動きました。
10.5 はよくわからんです。

291 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 14:57:30.19 ]
QT Creatorには新しいファイルの追加でC++ソース、ヘッダの追加は可能ですが
新しいフォルダの追加というのが見つかりません。
ソースファイルを下位フォルダを作成し仕分けする、というようなことは
できないのでしょうか


292 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 15:12:45.71 ]
できますよ

293 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 15:15:07.65 ]
>>291
そんなもの下位フォルダ作ってソースをそこに置いて.pro書き換えればいいだけ。
何でもRADツールの機能に頼らないで、.proを手で編集することくらい覚えないと
使いこなせないよ。

つーか.proを直接編集する方が早いし、自由も利く。コメントも書けるし。

294 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 15:17:20.81 ]
よく解らなくて、すいませんありがとうございました。

295 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 15:40:33.93 ]
291です。
>>292
>>293
レスありがとうございます。
今までは既存ファイルの追加で新しいファイルを追加していたので
新しいフォルダの作成は気に留めていませんでした。
.proの編集はライブラリ追加等で触っているので出来なくは無いのですが、
可能であればGUIから追加したいと思っていたのですが・・・。

296 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:37:06.65 ]
新しいファイルの追加で出てくるダイアログで右クリックしたらディレクトリくらい作れるだろ

297 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:49:14.93 ]
Qtで作成したアプリケーションってデバッガ上じゃなきゃ動作しないのに
なんで人気なの?

298 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:55:12.51 ]
>>297
ha? Google EarthやPhotoshop Elementsがデバッガー上で動いてたか?



299 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 17:04:09.99 ]
>>297
んなわけないだろ?
QtのbinディレクトリにPATH通してないんじゃないのか?

300 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 17:06:15.77 ]
>>295
ヤレヤレ。
やたらにソース嫁ってのもどうかと思うが、こういうのはやっぱりゆとりなのか?

301 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 18:27:02.18 ]
>>293
ようやく理解できました。
フォルダがツリーに表示されている時はそこから追加、
フォルダが表示されるのはフォルダが必要になった時、なのですね。
先にフォルダだけ作ってからそこから新規作成するのだと思ってました。

>>300
申し訳ないです。出来れば煽りだけではなくソースの提示をお願いします。

302 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 18:30:12.52 ]
>>255と同じ臭いがする…

303 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 19:02:13.24 ]
馬鹿には無理

304 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 19:22:14.51 ]
286です。
このコマンドを利用したあとで、何度かコンパイルをしていたら
QWidget: Must construct a QApplication before a QPaintDevice
というエラーが出るようになりました。

コード的に問題はなく、きちんと new しているWidget にたいして
GUI イベントを呼ぶタイミングでエラー起こっており、
ぐぐったら、どうやら
- release と debug のコードが混ざっている
- 実行ファイルとライブラリのバージョンが違う
などの原因があるようです。

特定のコンポーネント(渡しの場合はQProgressDialog)でのみ発生する可能性があるので、
気をつけたほうがよさそうでした。

305 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 19:26:01.46 ]
macは糞

306 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 19:27:03.60 ]
>>304
馬鹿には無理

307 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 19:29:01.55 ]
QWidget: Must construct a QApplication before a QPaintDevice
QWidget: Must construct a QApplication before a QPaintDevice
QWidget: Must construct a QApplication before a QPaintDevice
QWidget: Must construct a QApplication before a QPaintDevice
QWidget: Must construct a QApplication before a QPaintDevice
QWidget: Must construct a QApplication before a QPaintDevice
QWidget: Must construct a QApplication before a QPaintDevice
QWidget: Must construct a QApplication before a QPaintDevice
QWidget: Must construct a QApplication before a QPaintDevice
QWidget: Must construct a QApplication before a QPaintDevice


308 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 19:30:06.78 ]
なんで素人ってエラーメッセージ読まないんだろうな



309 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 19:39:10.41 ]
エラーメッセージからは
「QPaintDevice を 使う前に QApplication を作れ」
とだけしか読み取れないのですが。。。

問題が発生するアプリケーションを破棄し、リビルド -> デプロイ用にコマンド呼び出し
としたら直りました。

310 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 21:23:02.15 ]
既に Deploy したものを Qt Creator が上書きするのがよくないかもしれないですね。
毎回デスクトップにコピーしてから、それを Deploy 用にすることにします。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<170KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef