12/04/01 09:39:43.22
重たい処理をしてる最中の描画がうまく働かず、GUIの一部がうまくアップデートされない状態に時々ならないですか?
その箇所をアップデートするようなイベント(クリックとか、マウスオーバーとか)で元に戻るんですが、
放置しておくと永遠に見えないままです。
定期的(1000ms間隔ぐらい?) な MainWindow のリフレッシュとかが必要なんですかね。。。
Macだとこの問題は発生しないのですが、Windowsだと起きます。
201:営利利用に関するLR審議中@詳細は自治スレへ
12/04/01 14:38:00.95
>>200
> 重たい処理をしてる最中の描画がうまく働かず、GUIの一部がうまくアップデートされない状態に時々ならないですか?
イベントハンドラで重たい処理をしてれば、イベントループが回らないので
GUIがうまく更新されないのはしょうがないんじゃないかい?
重い処理は別スレッドで処理しないと駄目なんじゃないかな
202:営利利用に関するLR審議中@詳細は自治スレへ
12/04/01 15:09:12.57
よく分からんのですが、qtのオープンソース版ってひとつしか頒布されてなくて、
(自分がインストールしたのはこれです → Qt by Nokia v4.8.0 (MinGW OpenSource) )
>>2のLGPLライセンスだと思って使ってもいいってことですか?
つまり、LGPLライセンス用とGPLライセンス用の2種が存在するわけではないですか?
203:営利利用に関するLR審議中@詳細は自治スレへ
12/04/01 15:21:08.19
GPL、LGPU好きな方で使える
204:営利利用に関するLR審議中@詳細は自治スレへ
12/04/01 15:33:35.09
あ、即レスありがとうございます
205:営利利用に関するLR審議中@詳細は自治スレへ
12/04/01 18:08:32.63
初歩的だと思いのですが、質問させてください
QtCreatorを使っており、ui_mainwindowを読み込んだ
MainWindowクラスがあります。
uiではMainWindowウィジェットの子ウィジェットとしてQTabWidgetクラスのtabsウィジェットが
設定されています。
このtabウィジェットに対して色々な処理を加えたい
(コンテキストメニューでタブを追加したり消したりするような処理など)
時に、この処理をMainWindowクラスに書くのは何かちがうのかなと思ったのですが、
別個にTabsクラスを作って、それにtabsを渡して色々処理するようにしようと思ったのですが
セオリー的にはどうなっているのでしょうか
教えていただけますと嬉しいです
206:営利利用に関するLR審議中@詳細は自治スレへ
12/04/01 20:51:51.75
Tabsクラスにtabsを渡すって何?
207:営利利用に関するLR審議中@詳細は自治スレへ
12/04/01 22:12:58.87
>>205
コンテキストメニューでタブを追加するという処理なら、
・コンテキストメニューを作ってQActionをアサインする
・QAction::triggered()シグナルをMainWindowクラスで受け取る
・追加するtabをQWidgetで作成(もしくはあらかじめ作る)
・ui->tabs->addTab()で追加する
で鉄板だと思うのだが、好きにやってみたらいいんじゃね?
208:営利利用に関するLR審議中@詳細は自治スレへ
12/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審議中@詳細は自治スレへ
12/04/02 00:54:38.58
エスパーじゃないんでよくわからんが、QStringの扱い方がまずいんでないの?
コピーしまくってたりとか、変なループ回して同じ処理を何度も繰り返したりとか。
メッセージが回らなくなるレベルの重さなんて、今時の環境だったらよっぽど無駄なことしないと難しいよ。
210:営利利用に関するLR審議中@詳細は自治スレへ
12/04/02 07:15:50.94
ループの中に QApplication::processEvents() を入れるとか、そういう話じゃない?
211:営利利用に関するLR審議中@詳細は自治スレへ
12/04/02 08:19:06.11
>>209
QStringの扱いがまずいというのはあるかもですね。
本来、QPlainTextEditは大量の文書を入れる用途には向いていないようなのに、
数十万行程度読みこませることがあるので。。。
あと、signal の送受信の際に、内部的にQStringを何度もコピーしている可能性も
考えたほうがいいかもしれないです。。。
>>210
それも以前試したのですが、目に見えた改善はなかったです。
ううむ。
212:営利利用に関するLR審議中@詳細は自治スレへ
12/04/02 10:00:08.79
試してないが、QTextDocumentを別スレッドで作って、
そこにテキストを設定した後にQPlainTextEditにsetDocumentする手は使えない?
QTextDocument::clone() を使ってコピーする必要はありそうだが。
URLリンク(qt-project.org)
動的にテキストが更新されていく場合は難しいかもしれないが。
213:営利利用に関するLR審議中@詳細は自治スレへ
12/04/02 10:06:18.35
>>211
> 本来、QPlainTextEditは大量の文書を入れる用途には向いていないようなのに、
> 数十万行程度読みこませることがあるので。。。
それが問題だと思う。
巨大文書用のエディタクラスを作るしかないかも。
#仕事として発注してくれれば受けるけど、そこまでコストかける気はなさそうだね
214:営利利用に関するLR審議中@詳細は自治スレへ
12/04/02 14:08:43.81
>>211
>あと、signal の送受信の際に、内部的にQStringを何度もコピーしている可能性も
>考えたほうがいいかもしれないです。。。
QStringはコビーオンライトするようになっているので、ポインタサイズしかコピーしていません。
215:営利利用に関するLR審議中@詳細は自治スレへ
12/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審議中@詳細は自治スレへ
12/04/02 17:58:41.07
ながれをぶったぎってすみませんが、
Qt4.8.0以降でOpenGLを使う場合、glutをincludeしなくなっているので
gluLookAt()が使えません。そうすると、自前で視点変換の行列を
用意しなければならないのですか。それとも代わりの関数がどこかの
クラスに用意されているのでしょうか。
217:営利利用に関するLR審議中@詳細は自治スレへ
12/04/02 19:05:22.68
#include <GL/glu.h> を追加すればいいんでないの
URLリンク(bugreports.qt-project.org)
そういう問題じゃない?
218:営利利用に関するLR審議中@詳細は自治スレへ
12/04/02 20:33:42.11
>>217
なるほど。たしかにglu.hでうごくみたいですね。
<QtOpenGL/QGLWidget>のなかでgl.hしか読み込んでいなかったので
そうしようと思いませんでした。
リンクによると、Qtではglutを使わない方針になっているんですね。
219:営利利用に関するLR審議中@詳細は自治スレへ
12/04/02 20:44:55.49
>>218
Qt4.8から使い始めたから知らなかったけど、
includeしてたのってGLUTじゃなくてGLUじゃない?
OSXはこんな感じで書けばいいみたい
URLリンク(qt-project.org)
220:営利利用に関するLR審議中@詳細は自治スレへ
12/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審議中@詳細は自治スレへ
12/04/02 23:44:06.97
>>213
ググったら似たようなトラブルが山のように出てきたので、
おそらくそうですね。
プロっぽい人の回答だと、
1) オンラインのログのようなものなら、組み込み機能の行数制限を使って、古い行を上から自動で消す
2) ページングに細かくぶったぎる
というのがよく見られるパターンでした。
私も趣味で開発(タダ)してるんで、金はかけられないですw
巨大文書用のエディタクラスですか。。。
作るならQPlainTextEditと上位クラスのコード読まないと無理そうですね。
222:営利利用に関するLR審議中@詳細は自治スレへ
12/04/02 23:52:48.62
>> 212
ああ、それいいかもですね。
setTextDocument の スピード について main thread で検証してみて、
それが速ければ試してみる価値がありそうです。
結果は後日報告します。ありがとうございます。
いやー、随分悩んだのですが、相談すると自分が考えつかないような
解法を色々教えていただけて、助かります。
223:営利利用に関するLR審議中@詳細は自治スレへ
12/04/03 23:10:53.31
Qt 5 Alphaリリースしました
224:108
12/04/04 03:52:13.17
Qt5では、簡単に言うと何がいいのでしょう?
225:営利利用に関するLR審議中@詳細は自治スレへ
12/04/04 11:48:51.05
>>224
URLリンク(qt-project.org)
226:営利利用に関するLR審議中@詳細は自治スレへ
12/04/04 18:19:44.50
>>225
もう和訳でてる
URLリンク(labs.qt.nokia.co.jp)
227:営利利用に関するLR審議中@詳細は自治スレへ
12/04/04 22:29:23.76
>>199
これつかわないと64ビット版のwindows向けにビルドできないのでしょうか???
228:営利利用に関するLR審議中@詳細は自治スレへ
12/04/05 00:22:05.26
>>227
WOW64でいいなら使わなくてもよいでしょう
229:営利利用に関するLR審議中@詳細は自治スレへ
12/04/05 00:25:37.15
組み込みでもOpenGL使えるのかな
230:営利利用に関するLR審議中@詳細は自治スレへ
12/04/05 01:36:43.32
>>229
ドライバがあれば、な。
231:営利利用に関するLR審議中@詳細は自治スレへ
12/04/05 07:58:01.23
>>229
Qt 4ではドライバがあっても問題が多過ぎて満足に使えませんでした。
問題を報告したら、今のアーキテクチャではもう無理なので、Lighthouse迄待ってくれと言われました。
Qt 4.8のLighthouseのOpenGLドライバは、問題がまだあるけれどそこそこ動きます。
232:営利利用に関するLR審議中@詳細は自治スレへ
12/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審議中@詳細は自治スレへ
12/04/07 22:26:04.52
>>232
ここ数年こういったQtの実装の不十分さが目立って来ています。
報告しても、古いからもう改善しないとクローズされるのが何度もあって、言う気も失せています。
234:営利利用に関するLR審議中@詳細は自治スレへ
12/04/08 00:50:31.53
そのへんはしかたないと思うけどね。
Javaとかと違ってネイティブで動くことに意味があるんだし。
235:営利利用に関するLR審議中@詳細は自治スレへ
12/04/08 00:55:01.74
QMLの不具合は報告するとすぐさま修正されるよ
QWidgetは放置されるけど
236:営利利用に関するLR審議中@詳細は自治スレへ
12/04/08 11:16:36.41
馬鹿には無理
237:営利利用に関するLR審議中@詳細は自治スレへ
12/04/08 11:44:19.69
オプソは総じて、過去の遺産のメンテみたいな面白くもないことはしたがらないからな
自分で直すか有償サポート申し込めってことだな
238:営利利用に関するLR審議中@詳細は自治スレへ
12/04/09 12:35:16.58
オープンソースといってもNokia関係者が8割だそうだ。
239:営利利用に関するLR審議中@詳細は自治スレへ
12/04/09 12:59:20.02
NokiaはQMLで何がしたいんだろう?
240:営利利用に関するLR審議中@詳細は自治スレへ
12/04/09 17:20:24.03
Qtで作ったMeeGoを捨てて、Windows Phoneに寝返ったNokiaに、
もう一度Qtの開発者達へ目を向けさして、Nokiaのメインストリームにして欲しいんじゃないかな。
241:営利利用に関するLR審議中@詳細は自治スレへ
12/04/09 22:51:02.32
Qtの GUI 系のアップデートって、メソッドの呼び出し順序で挙動が変わりますね。
QPlainTextEdit を拡張して、左側にラインナンバーを表示させているのですが、
再定義を以下のようにすると
paintEvent(QPaintEvent *e){
lineNumberArea->repaint(); <--- (1)
QPlainTextEdit::paintEvent(e); <--- (2)
}
Editer本体の描画がうまく動かなかったのですが、
この(1)(2)を逆にしたら問題なく動くようになりました。
重要なイベントを先に動かしたほうがいいみたいですね。
242:営利利用に関するLR審議中@詳細は自治スレへ
12/04/09 23:06:09.30
単に理解できてないだけなんじゃね
243:営利利用に関するLR審議中@詳細は自治スレへ
12/04/09 23:11:35.16
それは単純に、(2)が上書きしているからじゃないの?
Widget が透ける設定じゃなけりゃ、塗りつぶすでしょ。
244:営利利用に関するLR審議中@詳細は自治スレへ
12/04/09 23:33:02.87
>>243
PlainTextEditの描画を少し右寄せして、空いた隙間にライン描画のための QWidget を配置しています。
両者は重なっていないので、塗りつぶしは発生しないです。
ペイントイベントが半動きのようになっていて、以下のような症状がでていました。
- スライダーを動かすと、上下 20 % が空白になる
- 停止すると Editer が真っ白
- クリックすると、描画され文字が確認できる
- カーソルを動かすと、現カーソル行だけが空白
- 左側 30%ほどしか描画されない
上記は全て同時に発生するのではなく、このうちのいくつかが複合的に起きていました。
Win/Macともに問題なかったコードを、Macでコードをリファクタリングしたあとに、
Windowsで動かすと急に上記のような症状が現れて焦りました。
きちんと両方で検証しながらコードの修正変更を加えないと危ういですね。。。
245:営利利用に関するLR審議中@詳細は自治スレへ
12/04/10 00:28:09.75
>>244
>PlainTextEditの描画を少し右寄せして
どのようにして右寄せにしていますか。
246:営利利用に関するLR審議中@詳細は自治スレへ
12/04/10 14:09:33.70
なんでupdateじゃなくてrepaintなの?
あと URLリンク(qt-project.org) の
> 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審議中@詳細は自治スレへ
12/04/10 23:00:20.51
>>245
setViewportMargins(x, 0, 0, 0);
ですね。
>>246
QPlainTextEdit の 継承クラスの中に QWidget(ライン番号表示)を持っていたのですが、
両者のアップデートのタイミングが異なっており、「行番号がアップデートされずに、
実際の行と食い違いがある」という状態になっていました。
なので、継承クラスで PaintEvent をオーバーライドし、
「本来のPaintEvent + 同時にアップデートされなかったWidgetのアップデート」
を行うようにしています。
248:営利利用に関するLR審議中@詳細は自治スレへ
12/04/10 23:01:56.89
伝え忘れましたが、行番号はSQroll範囲全てにあるわけではなく、
現在見ている Window範囲にしか存在せず、必要に応じて行番号を
アップデートする仕組みで動作しています。
249:営利利用に関するLR審議中@詳細は自治スレへ
12/04/10 23:04:30.55
>>246
どっかのドキュメントで 「update ではなく、repaint を呼び出すべき」というのを見かけ、
それを盲目的に信じていました。
申し訳ないですが、一ヶ月近く前の話なので覚えていないです。ごめんなさい。
250:営利利用に関するLR審議中@詳細は自治スレへ
12/04/10 23:14:29.07
lineNumberArea実装の例はQtのサンプルに含まれてるよ
俺はそれ参考にして実装してる
251:営利利用に関するLR審議中@詳細は自治スレへ
12/04/10 23:20:05.39
>>244
>塗りつぶしは発生しないです
どうやって確認したの?
252:営利利用に関するLR審議中@詳細は自治スレへ
12/04/10 23:21:17.23
Code Editor Example | Documentation | Qt Developer Network
URLリンク(qt-project.org)
253:営利利用に関するLR審議中@詳細は自治スレへ
12/04/10 23:45:22.15
>>250,252
私もこれを参考にしました。
LineNumberAreaの行番号表示のアルゴリズム と、QPlainText の共存方法自体はほぼ同じです。
ただ、描画イベントの処理系はサンプルのままだとうまく動かなかったので、変更を加えています。
あと、他機能との実装の兼ね合いもあるので。。。
>>251
エリアがかぶっていないからです。
<--LineNumberArea->
<----(blank)--------------|----QPlainTextArea-------------->
というような感じですね。
254:営利利用に関するLR審議中@詳細は自治スレへ
12/04/10 23:48:57.16
結局、Qtのせいではなくて理解が足りなかったということでおk?
255:営利利用に関するLR審議中@詳細は自治スレへ
12/04/11 00:04:59.07
>>254
私はエキスパートはおろか、本業プログラマですらないので、
Qtの問題性を疑うより私の理解不足を疑うほうが妥当だと判断します。
ただ、文脈を持たないその指摘に、なんの意味があるかがよく分かりません。
低レベルな質問でスレ汚しをするな、という指摘なら謝ります。
256:営利利用に関するLR審議中@詳細は自治スレへ
12/04/11 08:29:10.49
>>255
> 私はエキスパートはおろか、本業プログラマですらないので、
> Qtの問題性を疑うより私の理解不足を疑うほうが妥当だと判断します。
以下の文章は自分の理解不足を疑った方がいいと判断している人の
文章には思えないのだが
理解不足の人が知ったかぶって不完全な知識をひけらかしているように読めた
> Qtの GUI 系のアップデートって、メソッドの呼び出し順序で挙動が変わりますね。
> QPlainTextEdit を拡張して、左側にラインナンバーを表示させているのですが、
===中略===
> 重要なイベントを先に動かしたほうがいいみたいですね。
257:営利利用に関するLR審議中@詳細は自治スレへ
12/04/11 20:21:10.84
煽るより正しい情報を書き込めよ
258:デフォルトの名無しさん
12/04/11 22:10:03.60
実践 Qt 4プログラミング
URLリンク(www.oreilly.co.jp)
目次
推薦のことば
序文
本書で使用されている表記規則
意見と質問
謝辞
1章.デスクトップ用ハイブリッドインターネットアプリケーション
1.1 インターネット指向ウィジェット
1.2 WebKitの適用
2章.オーディオとビデオ
2.1 QSoundと QMovieの適用
2.2 Phononマルチメディアフレームワーク
3章.モデル /ビュー.テーブルモデル.
3.1 Qtのモデル /ビューアーキテクチャ
3.2 テーブルに対する QStandardItemModelの使用
3.3 カスタムテーブルモデルの作成
259:デフォルトの名無しさん
12/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:デフォルトの名無しさん
12/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:デフォルトの名無しさん
12/04/11 22:21:57.74
エディタの所のカスタムテキストエディタは、1行エディタとかやってるとこからして
IME周りからやってくれるのかな?だとしたらほしいなあ。よくわかんないし
262:デフォルトの名無しさん
12/04/12 01:23:36.35
翻訳元これかな、サンプルコード見るとそこまで凝ったエディタでもなさそう
Advanced Qt Programming
URLリンク(www.qtrac.eu)
263:デフォルトの名無しさん
12/04/12 01:35:00.34
QTextEditの使い方の説明だよ
264:デフォルトの名無しさん
12/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
12/04/12 08:38:46.24
すみません訂正です。
誤:/Application/Xcode.app
正:/Applications/Xcode.app
266:デフォルトの名無しさん
12/04/12 08:56:20.72
>>264
頑張ってこのスレ読み返せば解決する
267:デフォルトの名無しさん
12/04/12 09:25:27.01
>>266
> 頑張ってこのスレ読み返せば解決する
情報ありがとうございます。xcode で検索して >>166 を発見しました。
>>166
> 需要は無さそうですが、解決したので念のため。
いえいえ、需要大有りです。大変助かりました。
ありがとうございます。
今、Qt SDK 1.2.1 をインストール中です。C++ が無いというエラーダイアログ
は出なくなりました。
268:デフォルトの名無しさん
12/04/12 13:58:42.21
Mac で QTextEdit に(フォントはデフォルトのまま)日本語の文字を入れると、
行が下に少しずれるのですが、これはそういうものなのでしょうか?
ずれないように対処する方法がありましたら、ご教授ください。
よろしくお願いします。
269:デフォルトの名無しさん
12/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:デフォルトの名無しさん
12/04/12 22:46:34.89
sleep の問題の解決になっていないのですが、threadの終了を待つには
thread->terminate();
while(!thread->isFinished(){
QCoreApplication::processEvents();
}
で十分でした。
マシンによると思うのですが、うちのやつだと100回以内にループを
抜けていたので sleep するレベルではありませんでした。
271:デフォルトの名無しさん
12/04/12 22:53:29.53
wait()だろ普通
272:デフォルトの名無しさん
12/04/12 23:09:12.95
>>271
wait() って、そのインスタンスに走らせたスレッド(runが動いているやつ)を止めるのではなく、
呼び出し元のを止めるんですね。。。
wait()を使うことにします。
ありがとうございました。
273:デフォルトの名無しさん
12/04/12 23:17:50.70
wait()はメインスレッド止まるけど、while使うとQCoreApplication::processEvents()呼ぶから画面がぬるぬる動くんじゃね
274:デフォルトの名無しさん
12/04/13 07:31:31.12
>>270
QTimer::singleShot()で呼び出されるスロットで、スレッドの終了判定をするというのはどうでしょうか。
スレッドが終了していなければ、singleShot()を再度呼び出す。
ビジーループにならず、wait()でメインスレッドが固まるのも避けられます。
275:デフォルトの名無しさん
12/04/13 09:40:19.86
>>269
>Threadの継承クラス以外で sleep 関数に類似する関数は使えないのでしょうか。
QTest::qSleep()は別として、メインスレッドでsleep関数に類似するものを使うとGUIが固まるので、
敢えて用意していません。
276:デフォルトの名無しさん
12/04/13 13:22:55.99
QTimerだとかで小細工しなくても、こんなんで十分じゃね?
while(!thread->wait(300))
{
qApp->processEvents();
}
277:デフォルトの名無しさん
12/04/14 00:11:59.16
270です。
>>273
確かにそうですね。挙動として問題がないので、結局この実装のままにしています。
>>274
closeEvent 内部で終了を待ちたかったので、今回の処理はそれは利用しませんでした。
その方式が一番 GUI に負担が少なくていいですよね。
>>275
sleep に関わらず main thread で時間がかかる処理はやらせないほうが無難みたいですね。。
入門書にあった基本中の基本ですが、頭から抜けていましたw
>>276
wait()のみと、while 方式の両方のいいとこをとったような実装ですね。
while内の判定がスマートw
278:デフォルトの名無しさん
12/04/14 00:54:10.88
Macでアプリの配布ってどうやります?
Deploying an Application on Mac OS X
URLリンク(qt-project.org)
という記事を見つけましたが、もっと簡単にやる方法があったら教えてもらえないですか?
できれば Qt Creator からそのまま出力したいです。
279:デフォルトの名無しさん
12/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:デフォルトの名無しさん
12/04/14 09:03:04.90
countとかすると、0じゃない値が帰ってくる?
ワンラインで取ろうとせず、どの行程でコケてるか調べてみたら。
しばらく使ってないから忘れたけど
menubar -> menu -> action
って親子関係じゃなかったっけ?
281:デフォルトの名無しさん
12/04/14 09:04:22.15
あ、ごめん。menubar じゃなくて toolbar か。
282:デフォルトの名無しさん
12/04/14 09:17:00.41
ui->button1とかでアクセスできるだろ
283:デフォルトの名無しさん
12/04/14 10:52:39.37
馬鹿には無理
284:デフォルトの名無しさん
12/04/14 11:42:54.59
AccessとQtは同じくらい面白い。
285:279
12/04/14 12:36:13.14
レスありがとうございます。
uiを色んなモジュールで引き回しまくるのが嫌なので、できればtoolBarから取得したいのですが、なんとかならないものでしょうか。
QTでは普通、どのモジュールからもuiオブジェクトから個々の部品オブジェクトにアクセスするものなんでしょうか
286:デフォルトの名無しさん
12/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:デフォルトの名無しさん
12/04/14 12:46:35.96
>>285
その部分だけ ui じゃなくて、コードを使って GUI を作ったら?
そしたら、toolBar から簡単に子供を取れるんじゃないかな。
288:デフォルトの名無しさん
12/04/14 13:39:19.28
じゃあ、toolbar->actions()から自分で検索すれば?
289:デフォルトの名無しさん
12/04/14 14:11:50.67
スレチかもしれんが、286のついでに。
Mac で Qtで作ったアプリにアイコンをつけたければ、
myapp.app/Resources/ に xxx.icns を追加。
info.plt を 開いて、追加したアイコンを icon に設定。
アイコンのファイル icns を作るには、Img2icns というアプリが便利だった。
URLリンク(www.macupdate.com)
290:デフォルトの名無しさん
12/04/14 14:13:37.19
ちなみに、286 の方法なのですが、snow leopard でコンパイルしたものは、
qt4 をインストールしていない lion で動きました。
10.5 はよくわからんです。
291:デフォルトの名無しさん
12/04/14 14:57:30.19
QT Creatorには新しいファイルの追加でC++ソース、ヘッダの追加は可能ですが
新しいフォルダの追加というのが見つかりません。
ソースファイルを下位フォルダを作成し仕分けする、というようなことは
できないのでしょうか
292:デフォルトの名無しさん
12/04/14 15:12:45.71
できますよ
293:デフォルトの名無しさん
12/04/14 15:15:07.65
>>291
そんなもの下位フォルダ作ってソースをそこに置いて.pro書き換えればいいだけ。
何でもRADツールの機能に頼らないで、.proを手で編集することくらい覚えないと
使いこなせないよ。
つーか.proを直接編集する方が早いし、自由も利く。コメントも書けるし。
294:デフォルトの名無しさん
12/04/14 15:17:20.81
よく解らなくて、すいませんありがとうございました。
295:デフォルトの名無しさん
12/04/14 15:40:33.93
291です。
>>292
>>293
レスありがとうございます。
今までは既存ファイルの追加で新しいファイルを追加していたので
新しいフォルダの作成は気に留めていませんでした。
.proの編集はライブラリ追加等で触っているので出来なくは無いのですが、
可能であればGUIから追加したいと思っていたのですが・・・。
296:デフォルトの名無しさん
12/04/14 16:37:06.65
新しいファイルの追加で出てくるダイアログで右クリックしたらディレクトリくらい作れるだろ
297:デフォルトの名無しさん
12/04/14 16:49:14.93
Qtで作成したアプリケーションってデバッガ上じゃなきゃ動作しないのに
なんで人気なの?
298:デフォルトの名無しさん
12/04/14 16:55:12.51
>>297
ha? Google EarthやPhotoshop Elementsがデバッガー上で動いてたか?
299:デフォルトの名無しさん
12/04/14 17:04:09.99
>>297
んなわけないだろ?
QtのbinディレクトリにPATH通してないんじゃないのか?
300:デフォルトの名無しさん
12/04/14 17:06:15.77
>>295
ヤレヤレ。
やたらにソース嫁ってのもどうかと思うが、こういうのはやっぱりゆとりなのか?
301:デフォルトの名無しさん
12/04/14 18:27:02.18
>>293
ようやく理解できました。
フォルダがツリーに表示されている時はそこから追加、
フォルダが表示されるのはフォルダが必要になった時、なのですね。
先にフォルダだけ作ってからそこから新規作成するのだと思ってました。
>>300
申し訳ないです。出来れば煽りだけではなくソースの提示をお願いします。
302:デフォルトの名無しさん
12/04/14 18:30:12.52
>>255と同じ臭いがする…
303:デフォルトの名無しさん
12/04/14 19:02:13.24
馬鹿には無理
304:デフォルトの名無しさん
12/04/14 19:22:14.51
286です。
このコマンドを利用したあとで、何度かコンパイルをしていたら
QWidget: Must construct a QApplication before a QPaintDevice
というエラーが出るようになりました。
コード的に問題はなく、きちんと new しているWidget にたいして
GUI イベントを呼ぶタイミングでエラー起こっており、
ぐぐったら、どうやら
- release と debug のコードが混ざっている
- 実行ファイルとライブラリのバージョンが違う
などの原因があるようです。
特定のコンポーネント(渡しの場合はQProgressDialog)でのみ発生する可能性があるので、
気をつけたほうがよさそうでした。
305:デフォルトの名無しさん
12/04/14 19:26:01.46
macは糞
306:デフォルトの名無しさん
12/04/14 19:27:03.60
>>304
馬鹿には無理
307:デフォルトの名無しさん
12/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:デフォルトの名無しさん
12/04/14 19:30:06.78
なんで素人ってエラーメッセージ読まないんだろうな
309:デフォルトの名無しさん
12/04/14 19:39:10.41
エラーメッセージからは
「QPaintDevice を 使う前に QApplication を作れ」
とだけしか読み取れないのですが。。。
問題が発生するアプリケーションを破棄し、リビルド -> デプロイ用にコマンド呼び出し
としたら直りました。
310:デフォルトの名無しさん
12/04/14 21:23:02.15
既に Deploy したものを Qt Creator が上書きするのがよくないかもしれないですね。
毎回デスクトップにコピーしてから、それを Deploy 用にすることにします。
311:285
12/04/14 22:17:28.95
レスありがとうございます
>>その部分だけコードで
そうすれば多分解決すると思うのですが、デザイナでポトペタでやると
うまくいかないというのが釈然とせず・・
デザイナで置いたアクションをうまくコード側で取得するすべはないものかと。。
>>actions()
こんなメソッドあるんですね。
ただ複数actionあった場合は複数返ってきて、
それぞれ別の処理を加えたい時に面倒臭そうですね
toolBar->serachAction('playButton');
みたいなことが出来ればいいのですが、
こういうメソッドはないのでしょうか?探しても見つからないです。
あまり需要がないということでしょうか。
コードでActionを生成しましょうということなのですかね・・
312:デフォルトの名無しさん
12/04/14 22:22:59.77
ないときはつくれよ
313:デフォルトの名無しさん
12/04/14 23:08:28.81
>>311
自分でsearchActionとやらを作れ
余裕だろ
314:デフォルトの名無しさん
12/04/15 00:25:29.22
>>311
デザイナで作ると、アプリが複雑になるにつれて、機能を作り込むのがキツくなりませんか?
コードでGUIも作ると、「この Widget 周りの処理が複雑になってきたなぁ」 -> 「継承 Widget に仕事を集約するか」
という流れが簡単にできると個人的には思っています。
315:デフォルトの名無しさん
12/04/15 01:12:10.32
PyQt4で最近GUI開発を始めたのですが、わからないところがあったのでご教示願います。
SpinBoxの値などの変更と連動してWidget(PushButtonなど)の追加、削除を動的に行いたいのですが、なかなかうまくいきません。
TestWidgetというクラス(QWidgetを継承)にself.spinbox(QSpinBox)と、self.buttons(QPushButtonの配列)、self.buttonPanel(QWidget、self.buttonsをこの上に配置)、を持たせ
self.spinbox.valueChanged.connect(self.setButtons)とし、
値が変わるごとにself.buttonPanelを作り直してみたり、
self.buttonPanelのlayoutをTestWidgetに持たせ、同様にしてlen(self.buttons)とspinboxの値に応じて
layout.addWidgetやremoveWidgetで調整してみたり自分が思いつく限りのことはやってみましたがだめでした。(かなり的はずれなことをしているかもしれません)
どうすればいいかわかる方がいらっしゃればお教えください。
316:デフォルトの名無しさん
12/04/15 01:25:16.19
それでいいよ
317:デフォルトの名無しさん
12/04/15 01:30:23.82
>>315です。説明不足な点があったので補足しておきます。
self.setButtonsは自作のメソッドで、
def setButtons(self,num):
self.buttons=[]
layout=QVBoxLayout()
for i in range(num):
self.buttons.append(QPushButton(parent=self))
layout.addWidget(self.buttons[i])
self.buttonPanel=QWidget(parent=self)
self.buttonPanel.setLayout(layout)
と言う感じにspinboxの値が変わるごとにbuttonPanelを作り直しています。
別インスタンスになっているから変更が反映されないのかとおもい、TestWidget全体のlayoutを再びセットしなおそうとしたら今度は別のところがうまく行かなくて...と言う感じでこの方法は断念しました。
318:デフォルトの名無しさん
12/04/15 01:32:12.61
それでいいよ
319:デフォルトの名無しさん
12/04/15 09:15:55.10
>>317
qtに限った話じゃないが、一気に作ろうとせず、ちょっとずつ挙動を
確認しながら作ってみたら?
どっかでイベントが呼び出されていないとか、間違った変数を使っているとかさ。
あと、見た目じゃなく qDebug() などでwidetの構成を出力してみたりとか。
本当は追加されているのだけど、paintイベントが走らず見えていないだけかもよ。
まずは問題箇所を切り分けないと。
320:デフォルトの名無しさん
12/04/15 10:41:35.00
>>317
PySideだけどこんな感じで出来た
URLリンク(pastebin.com)
321:デフォルトの名無しさん
12/04/15 12:51:06.84
馬鹿には無理
322:デフォルトの名無しさん
12/04/15 13:58:48.98
他の部分のウィジェットにアクセスしたくなる度に渡す引数増やすのが大変そうなので
結局ui引き回しで実装することにしました。
アドバイスくださった方々ありがとうございました!
323:デフォルトの名無しさん
12/04/15 14:45:22.27
>>319
>まずは問題箇所を切り分けないと
おっしゃる通りです。しかしそうしようにもまだ何がどう動いているのかもわかっていない(したがって何が問題の原因となり得るのか適切に判断できない)状態なので、ちゃんと本などで勉強します。
>>320
できました!!ありがとうございます。
buttonPanelのlayoutをTestWidgetに持たせて追加・削除を行う方法は、試してみたといいったもののあまり真面目にやっていませんでした(その頃には疲れ果てていて...)。
ボタンの削除をしたときにウィンドウのサイズが縮小しませんでしたが、setButtonsが呼び出される度にself.resize()で大きさを直したやったらまだ少し挙動不審ではあるもののいけそうなので頑張ってみます。
ありがとうございました。
324:デフォルトの名無しさん
12/04/15 14:52:53.68
QSignalMapperでスロットに2つ引数を渡したいのですが
どう書けばよいでしょうか??
325:デフォルトの名無しさん
12/04/15 17:25:29.87
>>322
馬鹿の考え休むに似たりってやつか…
326:デフォルトの名無しさん
12/04/16 21:30:16.10
せやから、AccessとQtは同じくらいおもしろい言うとるヤンか!
327:デフォルトの名無しさん
12/04/16 21:57:23.61
なんのはなしやねん
328:デフォルトの名無しさん
12/04/17 16:46:43.11
Qt 4.8.1のビルドに挑戦してます。
Windows7 64bit + VC2010Pro 64bit + ActivePerl 5.14.2 (32bit)の
環境です。しかし、ビルドがエラーで終了してしまいます。
configの指定次第でビルドが成功するのでしょうか。
ちなみに別のマシンのMingw32でも4.8.1のビルドは失敗してしまいます。
329:デフォルトの名無しさん
12/04/17 16:55:33.56
エラーメッセージ貼れ
330:デフォルトの名無しさん
12/04/18 01:49:52.57
エラーメッセージに原因が書かれてる
そこを直せばコンパイルできる
331:デフォルトの名無しさん
12/04/18 02:05:07.91
文字コードについて質問です
ウェブからとってきたデータがEUC-JPなので、
QTextCodec* euc=QTextCodec::codecForName("EUC-JP");
QTextDecoder *dec = euc->makeDecoder();
としてデコーダー通して変換しても、どうもQtがEUC-JPに対応していないようです
リファレンスにはEUC-JPもあるのですが・・・
どうすれば変換できるでしょうか。
環境は
windows7, QtCreator2.4.0, Qt4.7.4
です
332:デフォルトの名無しさん
12/04/18 02:49:49.82
QString str = enc->toUnicode(char* EUC-JPの文字列)
でいけたはず
333:デフォルトの名無しさん
12/04/20 01:51:55.64
qt5 alphaをVS2010でビルドするとqtsvgでエラーでるんだが、誰かビルド成功したひといる?configureかperl buildが悪さしてるっぽいんだけど。
因みにqtbaseはビルドできて実行もできる。
しかも最新ソースをgitクローンしようとしたら途中で失敗する。
334:デフォルトの名無しさん
12/04/20 17:04:00.67
>>333
問題なくビルドできたのはLinuxだけでした。
335:333
12/04/20 22:14:44.58
>>334
その後、qtsvgでエラーの原因分かりました。
単純にconfigure時のsyncqtスクリプトで環境変数QTDIRを参照していて、
旧バージョンのパスC:\Qt4.x.xを参照していたのが原因でした。
でも今度はQtWebkitでicu何チャラがないみたいなエラーがでてしまった…。
336:デフォルトの名無しさん
12/04/22 02:41:47.25
遅くなり申し訳ありません
>>332
どうも、
QTextCodec* euc=QTextCodec::codecForName("EUC-JP");
自体が失敗しているようです。
QTextCodec* euc=QTextCodec::codecForName("EUC-JP");
euc : <unavailable synchrounous data>
となっています。
対応していないのかな・・・
337:デフォルトの名無しさん
12/04/22 10:32:28.78
EUCはオワコン
338:デフォルトの名無しさん
12/04/22 13:59:30.98
プラグインが追加されていなかったみたいです。
とりあえずヘッダーに
#include<QPlugin>
Q_IMPORT_PLUGIN(qjpcodecs)
として、.proファイルに
QTPLUGIN += qjpcodecs
としたけど、それでも通らない。
cannot find lqjpcodecsd
のエラーが出される・・・
339:デフォルトの名無しさん
12/04/23 05:00:04.36
paintEvent以外でwidgetに描画出来ないのが不便すぎる
Qt以外だと出来たような気がするけどこんなもんなのか
340:デフォルトの名無しさん
12/04/23 05:30:35.79
>>339
その代わりにフリッカを防ぐという利点がある。
341:デフォルトの名無しさん
12/04/23 05:36:20.53
それって利点なの?
フリッカを防ぎたいときは単にpaintEventで描画すればいいだけで
paintEvent以外での描画を禁止する意味あるの?
342:デフォルトの名無しさん
12/04/23 07:23:53.54
>>341
>フリッカを防ぎたいときは単にpaintEventで描画すればいいだけで
それだけでは、ウィンドウ全体でのフリッカは防げない。
343:デフォルトの名無しさん
12/04/23 07:32:23.88
PAINTイベント以外で描画しても
フリッカで困ったこと一度もないけどな
344:デフォルトの名無しさん
12/04/23 09:42:22.70
>>339
できますよ
ちなみにフリッカとは関係ない
paintEventで描画してもへたくそだとフリッカでる
345:デフォルトの名無しさん
12/04/23 16:27:43.06
>>328です。
QTDIRのせいかと思い、QTDIR=D:\Qt\4.8.1 その他のパス通しなおして
再チャレンジしました。しかしfatal errorで止まります。エラーと直前のwarningは
以下です。おてあげです。
d:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\yvals.h(21) : war
ning C4005: '_HAS_TR1' : マクロが再定義されました。
コマンド ラインの引数 : '_HAS_TR1' の前の定義を確認してください
NMAKE : fatal error U1077: '"d:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\BIN\amd64\cl.EXE"' : リターン コード '0x2'
Stop.
NMAKE : fatal error U1077: '"d:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\BIN\amd64\nmake.exe"' : リターン コード '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : リターン コード '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : リターン コード '0x2'
Stop.
346:デフォルトの名無しさん
12/04/23 16:52:06.61
>345
VS2010はSP1かい?
もしアップデートしてないなら試してみてはどうかな
347:デフォルトの名無しさん
12/04/23 18:34:04.07
>>346
そういえば、EXPRESS版からProにしたときにちゃんとSP1あてなおしたか
あやしくなってきました。後日、環境整えて再チャレンジします。
348:デフォルトの名無しさん
12/04/23 19:35:28.08
>>343
>PAINTイベント以外で描画しても
>フリッカで困ったこと一度もないけどな
嘘をつくな、できる訳がない。
>>344
>できますよ
こちらも嘘をつくな、できないよ。
349:デフォルトの名無しさん
12/04/23 19:44:54.47
>>344
>ちなみにフリッカとは関係ない
ウィンドウレベルでというのを理解してないな。
350:デフォルトの名無しさん
12/04/23 22:15:55.17
恥の上塗りですね
わかります
351:デフォルトの名無しさん
12/04/25 09:38:12.71
NOKIAがジャンク級になっちまったい。 いずれサムスンが買収かな?
サムスンQt... いやな響きだ。
352:デフォルトの名無しさん
12/04/25 19:46:07.38
オープンソースなんだからフォークすりゃいいじゃん
353:デフォルトの名無しさん
12/04/25 23:25:17.28
だれか・・・プラグインの追加方法を教えてください
>>338の方法では無理でした
354:デフォルトの名無しさん
12/04/26 00:13:47.37
細かく見てないけど
Qt4.8.1 VS2010版だと何もしなくてもQTextCodecでEUC-JPからUnicodeになったよ
355:デフォルトの名無しさん
12/04/26 00:35:35.98
パスが通ってないか拡張ファイルが目的の場所に生成されてない
356:デフォルトの名無しさん
12/04/26 01:08:25.76
スタイルシートでUIの色変えるの、なんかめちゃくちゃ大変なんだけど。
どのパーツのどの状態とか、わけわからん。
Qt使ったアプリが流行ってるっていうけど、ほんとにこんなのみんな使ってるの?
357:デフォルトの名無しさん
12/04/26 07:32:01.70
>>356
Qtのスタイルシートは、失敗作で、使ってはならない機能です。
もう改善もバグの修正もされません。
スタイルシートは、駄作だけれど、他によいところは沢山ありますよ。
358:デフォルトの名無しさん
12/04/26 07:53:12.63
CDSCSS
359:デフォルトの名無しさん
12/04/26 08:00:20.64
でもスタイルシート使わないと出来ないこともあるんでね?
360:デフォルトの名無しさん
12/04/26 10:53:03.77
Qtは失敗作だらけじゃん
それが証拠にQtが使われたプロジェクトなんて極々わずかw
361:デフォルトの名無しさん
12/04/26 11:48:26.79
だらけって...他は?
> それが証拠にQtが使われたプロジェクトなんて極々わずかw
産業機器とかの世界とか、知らないだろ?
必死にネガキャンするのは、何でかねぇw
362:デフォルトの名無しさん
12/04/26 12:01:38.96
☆ 午後からはQt vs WPFをお送り致します。お楽しみに! ☆
363:デフォルトの名無しさん
12/04/26 12:04:30.34
Qtを使ってて、一番普及しているアプリは、KDEだよ。
Windows 使ってて、モバイルぐらいしか興味がない人には、どうでもいいことなんでしょうけど。
それならターゲットに合わせて、素直にC#とか、Objective-Cとかやればいいのに。
creator でたから、急激にWindows ユーザーが、このスレに増えたけど、正直何を期待して
わざわざやるのか俺には理解できない。
やたら、もう終わりとか言ううざい人がいたりするけど、Linuxがどうでもいいのなら、Qtは最初から
終わってますよ。
364:デフォルトの名無しさん
12/04/26 12:06:02.43
>失敗作だらけ
なのに
>使われたプロジェクトなんて極々わずか
?
365:デフォルトの名無しさん
12/04/26 12:59:53.72
>> 359
カスタムスタイルかQProxyStyleがあれば十分、
スタイルシートはQProxyStyleと同じ考え方で作られている
366:デフォルトの名無しさん
12/04/26 16:38:23.28
>>363
> creator でたから、急激にWindows ユーザーが、このスレに増えたけど、正直何を期待して
> わざわざやるのか俺には理解できない。
俺(と言うかウチ)の場合は死に体のC++ Builderからの乗り換え。書きためた資産があるから、
簡単にC++から他の言語に移行できないし。
367:デフォルトの名無しさん
12/04/26 16:42:22.20
>>366
VC++じゃだめなん?
368:デフォルトの名無しさん
12/04/26 18:26:47.08
>>367
MFCなんか使う気がしない。
.NETだとC++/CLIになって、ANSI C++で書かれた資産が利用できない。
369:デフォルトの名無しさん
12/04/26 20:10:33.68
凄いなぁ。
BCBから乗り換えたかったけど、いろいろと違いすぎて30分で諦めた。
370:デフォルトの名無しさん
12/04/26 21:31:07.77
>>363
どう考えてもPhotoshopやGoogle Earth、Operaの方が普及してると思う
371:デフォルトの名無しさん
12/04/26 21:44:07.41
流石にOperaよりはKDEの方が
372:デフォルトの名無しさん
12/04/26 21:57:53.77
>>369
さすがに30分は早すぎるんじゃぁ...
乗り換えるんだからいろいろ違うのは覚悟の上。Qtはまだ違いが少ない方かも。
GTK+(のC++バインディング)やらwxWidgetsやらいろいろ試してみて、親しみ
やすさや開発環境の出来でQtになった。
でもBCBはC++だからまだいい方。Delphiの人はどうするんだろう...
373:デフォルトの名無しさん
12/04/26 22:50:25.32
エンバカデロ死に体なのか
374:デフォルトの名無しさん
12/04/26 23:25:44.85
>>373
一例を挙げると、一時は一日に10件や20件の書き込みがあったメーリングリストに
閑古鳥が鳴いて、数週間や酷いと数ヶ月に1件になった。完全に取り残されたと
思った。
他にもあるんだけど、無責任なことは書けないので控えとく。
そこへ持ってきて2009版で大きな仕様変更が行われたのに、ドキュメント(ヘルプ)が
嘘だらけの無茶苦茶でわけわからなかったのが乗換えを決断する決め手になった。
375:デフォルトの名無しさん
12/04/26 23:45:18.67
会社の名前が変わった時点で開発環境が捨てられ気味に見えたもんなぁ
今の有様を考えると当時の印象は間違ってなかったってことか
昔は開発環境としてMSとガチで殴り合ってた会社だったのにな
376:デフォルトの名無しさん
12/04/26 23:57:04.15
C++Builderは1から使ってたけど嫌になった最大の原因はヘルプの出来がひどすぎること
バージョンアップよりヘルプまともにするほうがよほど重要なのに
377:デフォルトの名無しさん
12/04/27 00:29:52.36
>>375
Turbo C 対 Quick Cの時代が懐かしい...Turbo Cは本当に出来が良かった。
今思うとBCB3~6位が最盛期だったかな。
>>376
> バージョンアップよりヘルプまともにするほうがよほど重要なのに
禿同。使われもしない新機能より、ドキュメントやツールの充実やバグ取りを
優先させて欲しかった。
Qtも新機能優先のところが見えるけど、BCBよりずっとマシ。
ドキュメントは英語だけど、遥かに充実してる。
378:デフォルトの名無しさん
12/04/27 00:39:44.62
時代のせいかもしれないけどQtはホント太っ腹に作られてる
379:デフォルトの名無しさん
12/04/27 03:30:39.50
Qt4.7.4Linux版を使用しています
QPushButtonの色を変えるのにsetPaletteを利用していたのですが、
qtconfigのGUIスタイルがGTK+の時だけ色が変わりません
GTK+の時でもスタイルシートなら変更できるんですが、setPaletteでなぜ変更できないんでしょうか?
以前は変更できていたのでデスクトップ環境の設定がおかしいのかもしれないのですが……上手く調べられません
380:デフォルトの名無しさん
12/04/27 12:46:06.54
>>379
スタイルによっては、パレットを部分的に参照していないものがあります。
qgtkstyle.cppを読んで、変える方法を考えてみてはどうでしょうか。
381:デフォルトの名無しさん
12/04/27 12:51:18.37
>>372
30分は大げさに言い過ぎたけど、
クイックレポートを多用してたから諦めた。
382:デフォルトの名無しさん
12/04/27 17:09:17.79
>>381
あぁ、なるほど。それは厳しいね。
誰かそういうもの作ってないかな...
383:デフォルトの名無しさん
12/04/27 20:58:19.64
クイックレポート って何?
384:デフォルトの名無しさん
12/04/27 23:46:47.55
Qtデザイナでフォームにボタンやテキストなどを貼り付けていく感じで、
紙状のフォームにテキストや線やデータベースなどを貼り付けて、
印字帳票をデザインするdelphiやBCBに昔付属してたツール
385:デフォルトの名無しさん
12/04/28 11:49:54.99
Delphiもオブジェクト指向言語でポインタもあるし、案外障害はないんじゃね
愛用のコンポーネントの代替がないとかいうのはどうしようもないが
それよりも、プロパティの機能があっちに比べてだいぶショボいのがイラつくかも
386:デフォルトの名無しさん
12/04/28 18:07:21.67
>>385
属性機能ってどんなところが便利なの?
387:デフォルトの名無しさん
12/04/28 22:17:56.23
Qtも逆境続くなぁ。
KDEと統合したりしないのかね?
388:デフォルトの名無しさん
12/04/30 00:19:38.21
自業自得
389:デフォルトの名無しさん
12/04/30 20:59:31.01
Javascriptが世界を支配する日 - DQNEO起業日記
URLリンク(dqn.sakusakutto.jp)
もう氏ねよこいつら。最近のウェブ屋ども頭おかしいわマジで。
JavaScriptのVMは何の言語で書かれてるの?
てめえの使ってるブラウザは何の言語で書かれてるの?
てめえの使ってるOSは、デバイスドライバは、何の言語で書かれてるの?
JavaScriptで書かれてる業務系や基幹システムどれだけあんだよ?小数点切り捨てたら0%じゃねえの?
科学技術計算は?ゲームプログラムは?コンピュータグラフィックスは?
390:デフォルトの名無しさん
12/04/30 21:14:26.20
JavascriptはVMじゃなくinterpreterでしょ。
あとinterpreterはFortranかもしれないしCかもしれない
Delphiだってありうるし、GCJでコンパイルしたPure Javaかもしれない
391:デフォルトの名無しさん
12/04/30 21:29:20.00
横レスだけど、それ論点が違うんじゃないかなぁ・・・
392:デフォルトの名無しさん
12/04/30 21:29:41.63
>>390
最近のはVMが多いよ
URLリンク(ja.wikipedia.org)
393:デフォルトの名無しさん
12/04/30 21:54:04.56
QML最強ですねわかります
394:デフォルトの名無しさん
12/04/30 21:58:09.08
うん(力なく)
395:デフォルトの名無しさん
12/04/30 21:59:40.72
同意せざるを得ない
396:デフォルトの名無しさん
12/04/30 22:10:54.44
>>392
多いって・・・。V8だけじゃん。
397:デフォルトの名無しさん
12/04/30 22:22:32.75
そういや、RhinoとJScript.netもあったねぇ。
Rhinoが本当にVM式なのか、VM上で動くInterpretorなのかは知らんけど。
398:デフォルトの名無しさん
12/04/30 22:57:56.69
Qtで作成したアプリもやたらもっさり感満点なのはなんで?
399:デフォルトの名無しさん
12/04/30 23:05:30.43
>>398
俺はそんな感じしないけどなぁ。どんなアプリ?
400:デフォルトの名無しさん
12/04/30 23:22:33.90
うんこなう
401:デフォルトの名無しさん
12/04/30 23:36:22.50
QtCore4.dllとかQtGui4.dllとか同梱されてるアプリは
100%Qt製と思ってええのん?
402:デフォルトの名無しさん
12/04/30 23:36:48.38
Qtで作るともっさりなんじゃなくて、Qtに限らず普通に作るともっさりになりがち
さくさく動くアプリは開発者がさくさく動くように作ってるんだよ
もっさりなのが多いのは開発者がタコかそこに力を入れてないだけ
403:デフォルトの名無しさん
12/04/30 23:51:05.56
同意せざるを得ない
404:デフォルトの名無しさん
12/05/01 00:00:29.26
ユーザーの誤操作で誤動作するプログラムはくそだって
昔、先生がいっていました。
405:デフォルトの名無しさん
12/05/01 00:08:51.78
>>404
当たり前すぎ
406:デフォルトの名無しさん
12/05/01 00:09:14.04
車も原発も糞
407:デフォルトの名無しさん
12/05/01 00:20:53.65
業務系では運用で回避が基本なのでプログラムではなくてオペレータの責任です
408:デフォルトの名無しさん
12/05/01 07:19:08.02
>>407
業務系って、どこの業界だよ。
409:デフォルトの名無しさん
12/05/01 09:10:11.73
>>393
>QML最強ですねわかります
スケーラビリティがあればね。小物アプリまでならとてもいい。
410:デフォルトの名無しさん
12/05/01 14:03:43.87
「QMLはただの選択肢」ってたまにNokiaの人がブログに書いてるけど
選択肢が増えるのって、この業界じゃあんまいいことじゃないんだよな・・・
JavaScriptが嫌われるのもブラウザ戦争による無駄な苦労が大きそうだし
411:デフォルトの名無しさん
12/05/01 16:34:44.05
携帯小物アプリならば選択肢にはなるけれど、CADや複合機などでは選択肢にすらなり得ない。
412: 【吉】
12/05/01 17:11:17.09
おみくじ
413:デフォルトの名無しさん
12/05/02 00:01:21.93
あ~
QtPluginの追加の仕方がわからない
公式に書いてある方法じゃ通らないよ
パス通しても・・・
414:デフォルトの名無しさん
12/05/02 00:47:04.00
その程度こともできないで、今時Qtを使う理由ってなんなの?
415:デフォルトの名無しさん
12/05/02 00:58:19.40
C++入門として最適
416:デフォルトの名無しさん
12/05/02 11:22:38.73
>>413
QCoreApplication::addLibraryPath() はやってみた?
417:デフォルトの名無しさん
12/05/02 13:05:35.97
Q_OBJECTマクロについて質問があります。
QGLWidgetを継承したSubクラスを作成しました。
このSubクラスでsignal, slotを用いるためにQ_OBJECTマクロを
クラス内の先頭に記述したのですが、以下のようなエラーが発生しています。
LNK2001: 外部シンボル ""public: virtual struct QMetaObject const * __thiscall SubClass::metaObject(void)const " (?metaObject@SubClass@@UBEPBUQMetaObject@@XZ)" は未解決です。
Qtのmocの置換で生成された関数である、というところまでは調べましたが、
このエラーをなくす方法が分かりません。
申し訳ありませんがご教示いただけないでしょうか。
なお、いくつか他のクラスでも(QWidget)等を継承した場合も同様のエラーが発生しました。
418:デフォルトの名無しさん
12/05/02 13:46:41.68
>>417
・Q_OBJECTと書いたヘッダーファイルをプロジェクトに加えておく
(.proファイルのHEADERSのところに書いておく)
・qmakeを再実行してから(Qt Creatorなら[ビルド]→[qmake実行])
ビルドする。
これでOKなはず。
419:デフォルトの名無しさん
12/05/02 14:49:50.21
>>418
レスありがとうございます。
環境はQTCreatorを使っています。
Q_OBJECTと書いたヘッダファイルは
プロジェクトツリーの「ソース」→「新しいファイルを追加」で作成したもので
.proファイルには既に追加済みでした。
・qmakeを再実行してから(Qt Creatorなら[ビルド]→[qmake実行])
こちらのほうは再度試してみましたがダメでした・・・。
先程、新規プロジェクトを立ちあげて、テストクラスを作成したところ
QGLWidgetを継承したサブクラスでsignal,slot共に作成できることが確認できました。
もしかしたら、コンパイル設定がどこかおかしくなってしまったのかもしれません。
一度、新規プロジェクトに作成してソースコードその他を再度登録してコンパイルを試してみます。
420:デフォルトの名無しさん
12/05/02 22:04:35.35
clang++でqt使ってる人いる?
コンパイラーとリンカー、qmakeのどこで指定すんだっけ?
421:デフォルトの名無しさん
12/05/03 00:24:16.82
Qt 5はclang++になっているのでそれを見てみては?
422:デフォルトの名無しさん
12/05/03 01:49:43.03
>>419
qmake実行と同じことだと思うけど、Makefike類をいったん全部消してもダメ?
423:デフォルトの名無しさん
12/05/03 03:22:37.26
俺は意味不明なエラーになったときは全てクリーンしてリビルドするとだいたい直る気がするw
424:デフォルトの名無しさん
12/05/03 06:48:15.77
>>423
この現象は、それでは直らないんだよ。
原因は、新たにmocで処理しなければならないファイルが増えたのでMakefileを
作り直さなければならないことを、qmakeが認識できてないことにあるらしい。
俺もよくわかってるわけじゃないんだが。
クリーンとかリビルドってのは、コンパイル以降の話なのでこの場合は無関係
だと思う。
425:デフォルトの名無しさん
12/05/03 07:30:36.27
>>417
>このSubクラスでsignal, slotを用いるためにQ_OBJECTマクロを
>クラス内の先頭に記述したのですが、以下のようなエラーが発生しています。
コンパイルした後でQ_OBJECTを追加するとmocを動かすルールがMakefileに入っていないのでこのエラーになります。
qmakeを実行して、mocを呼び出すルールが入ったMakefileを生成すれば直ります。
426:デフォルトの名無しさん
12/05/03 08:11:17.23
Qt 5はWindowsもclangなん?
427:デフォルトの名無しさん
12/05/03 08:15:16.70
>>425
だよね。俺も経験あって、それで>>418を書いたんだけど、>>417サンの場合は何で
直らないんだろう?
428:デフォルトの名無しさん
12/05/03 23:24:02.71
BlackBerryがQt採用
429:デフォルトの名無しさん
12/05/04 01:53:41.99
QMLだけ対応とかなら
いらないです
430:デフォルトの名無しさん
12/05/04 08:45:22.50
携帯電話向けのQML以外はオープンソースだから自由にやればよい。
NokiaのTroll達はうまい逃げ場を作ったものだ。
431:デフォルトの名無しさん
12/05/05 03:24:01.02
fakevim vimrcひろいあげないんだな。
URLリンク(qt-project.org)
な、なおればいいんだな。
432:デフォルトの名無しさん
12/05/05 19:35:24.58
質問させてください。
CMake関連なのですが、
>>98
オープンソースのものをとりあえずコンパイルしてみたいという段階の初心者なのですが、
CMake Error at c:/CMake/share/cmake-2.8/Modules/FindQt4.cmake:575 (MESSAGE):
It appears you're trying to use Visual Studio with Qt built by mingw.
Those compilers do not produce code compatible with each other.
Call Stack (most recent call first):
CMakeLists.txt:52 (FIND_PACKAGE)
>>99
qt sdkでないqtを入れてみたら先に進みました
これが自分のWindows XP環境でも発生して、
コンパイルできず困っています。
新しいQtのインストールや環境変数からVisual C++のパスを除いたりを試して
みたのですが、うまくゆきません。
何が足りないのか、アドバイスいただけないでしょうか。
よろしくお願いします。
433:デフォルトの名無しさん
12/05/06 03:15:34.79
>>432
>オープンソースのものをとりあえずコンパイルしてみたいという段階の初心者なのですが、
であれば、CMakeは使わずにMinGWを使えば簡単にコンパイルできます。
434:432
12/05/06 12:09:53.94
レスありがとうございます。
フリーのソフトのプロジェクトをビルドしたい感じでして、
INSTALLファイルを見てみるとcmakeでビルドするように書いてあるのです。
ディレクトリ構成がMinGWでビルドする用になっていない気がしまして・・
あまり関係無いでしょうか。
435:デフォルトの名無しさん
12/05/06 13:16:55.75
>>434
>フリーのソフトのプロジェクトをビルドしたい
まず、mingw 4.4、ActivePerl(URLリンク(www.activestate.com))をインストールし、
qt-everywhere-opensource-src-4.8.1.zip(URLリンク(qt.nokia.com))を展開します。
これでビルドして使えるようになります。
>configure.exe
>mingw32-make.exe
>mingw32-make.exe docs
Qtを使うだけならば、URLリンク(qt.nokia.com)のSDKでインストールすれば楽です。
436:デフォルトの名無しさん
12/05/07 01:54:52.20
Debian + Qt2.8.1 にアップデートしたら、
QNetworkManager が、RC4 暗号化を使ってる https サイトに接続できなくなった、、、
デバッガで追うのは明日以降にして、バージョン戻し中、、、
徹夜しそう、、、orz
437:デフォルトの名無しさん
12/05/07 02:13:12.80
バージョン戻したら動いてくれて助かった、、、
とりあえず LD_LIBRARY_PATH で回避。
438:デフォルトの名無しさん
12/05/08 16:47:46.38
MinGW gcc 4.6.1でビルドしたlapackをQtで使いたくて悪戦苦闘中。
ツールチェインをmingw 4.6.1にしてビルドしたらmainに到達前に死ぬプログラムができる。
Qt付属のmingw 4.4でビルドすると、lapackに必要なlibgfortranがないのでビルド失敗。
Qtライブラリをmingw 4.6.1でコンパイルしようとすると、wchar_t*をLPSTRに変換できない類のエラーがわんさか出てきて断念
(ソースでGetProcessorNameとなっているのに、実際にはGetProcessorNameAとANSI版に置き換えられてエラー。なぜunicode版を使わない!)
素直にmingw 4.4を入れてlapackを作り直しか。
チラウラスマソ
439:デフォルトの名無しさん
12/05/08 17:11:14.14
clang早く来てくれー
440:438
12/05/08 19:10:19.57
sourceforgeが込んでてMinGWのアップデートに失敗、4.6.1と4.6.2が混在している状態だったので死んでただけだったorz
441:デフォルトの名無しさん
12/05/08 22:37:44.62
QGraphicsWebviewでスクロールするとflashがずれるのどうにかならんかなー
442:デフォルトの名無しさん
12/05/08 23:16:16.53
PyQt4を使っています。
URLリンク(pastebin.com)
のようなコードを書いてscrollAreaの中に縦の長さが動的に変化する(動的にlayoutに追加している)Widgetを組み込んでおり、横方向はscrollAreaに合わせ、縦はボタン数に応じて伸長するようにさせたいのですが、どうしたらいいのでしょうか?
adjustSize()では横方向の大きさがあわず、しかもなぜかspinBoxの値が2の時にbuttonPanelの大きさが変わっていないのかボタンが小さくなってしまいます(3以降は逆にだんだん大きくなっていきます)。
ButtonPanelをButtonLayout(QVBoxlayoutを継承しButtonPanelの機能を持たせたクラス)に変えたら、横方向はぴったりなのですが、中身が縦方向に伸長しませんでした。
443:デフォルトの名無しさん
12/05/09 01:04:48.20
Qtを初めて使ったのですが、デバッグについて質問させていただきます。
適当なGUIアプリケーションを作って、デバッグを行うと警告メッセージダイアログが表示されます。
具体的には、CDBバイナリが見つからないからGDBengineを使いますといった内容です。
もちろん、現状ではブレークポイントでもブレークしてくれません。
QtSDKをインストールする以外にデバッグを行うためには細かな設定が必要なのでしょうか?
それとも、インストール時の問題なら、再度入れなおしてみるのですが・・・
444:デフォルトの名無しさん
12/05/09 01:14:13.81
Qtを初めて使ったのですが、痛くてとても入りません。
445:デフォルトの名無しさん
12/05/09 01:36:42.63
>>442
俺が適当に書いたサンプルコードをそのまま使うなよ…
ButtonPanel.__init__で
self.layout.setSizeConstraint(QLayout.SetFixedSize)
でいけた(PySideで確認)、他にはボタンのminimumSizeやsizePolicyをいじるとか
446:デフォルトの名無しさん
12/05/09 07:28:06.74
>>443
VC++で使うならWindows SDKのDebugging Tools for Windowsを入れないとダメだったと思う
よくわからないけどとりあえず触ってみたいってことならMinGW版のSDK入れればそのままいけたはず
447:デフォルトの名無しさん
12/05/09 12:45:15.50
あの例の延々、延期になってた本が発売されてる・・・
448:デフォルトの名無しさん
12/05/09 14:36:05.48
>>434
レスありがとうございます。
cmakeで生成されるconfig.hがビルドに必要なようでして、やはりcmakeを
使う必要がありそうで、まだ悩んでいます。
QtCreatorでプロジェクトの中にあるCMakeLists.txt を開くと
cmakeでビルドするウィザードが出ることが分かったので、
そちらのやり方に変えてみているのですが、まだつまづいています。
CMakeウィザードに、
「/path/to/build_dir/ の中にcbpファイルが存在しません。
CMakeを実行してこのファイルを生成して下さい。・・・」
のような表示が出るのですが、ジェネレータの選択オプションが空になっており
何も選べず、先に進めません。このジェネレータとは何なのでしょうか?
どうすれば先に進めるか教えていただけると嬉しいです。
スレリンク(tech板:401-500番)
449:デフォルトの名無しさん
12/05/09 15:12:17.28
>>442
こんな感じで
URLリンク(pastebin.com)
450:デフォルトの名無しさん
12/05/09 20:10:22.78
あの本出てるぞ。今度は出す出す詐欺じゃなくて、マジで出た
451:デフォルトの名無しさん
12/05/09 20:12:06.10
実践Qt4?
誰か買った奴いないの
452:デフォルトの名無しさん
12/05/09 20:50:32.40
後数ヶ月でQt5がリリースされるタイミングで出されてもという気がしないでもない
453:デフォルトの名無しさん
12/05/09 21:24:03.94
むしろ Qt5 出てしまうとやばいので慌てて売りに出たという
454:デフォルトの名無しさん
12/05/09 21:44:51.62
>>455
お察しの通り流用させていただきました。そのことについて断りがなかった点については謝罪します。
今日一日色々試してみて、ButtonPanelのコンストラクタにself.layout.setSizeConstraint(QLayout.SetMinimumSize)
を追加し(QLayout.SetFixedSizeでは横方向に伸長しなかったので)、TestWidgetのresizeEventをオーバーライドしてサイズが変わるごとに
self.buttonPanel.resize(self.scrollArea.width()-19,self.buttonPanel.height())
として調整したら(無理やりですが)希望どおりの挙動をするようになりました。
>>449
わざわざありがとうございます。こちらの方がすっきりしていますね。参考にさせていただきます。
455:デフォルトの名無しさん
12/05/09 21:51:09.09
>>455 っておれ?
456:デフォルトの名無しさん
12/05/09 21:52:59.95
>>454です。
安価が間違っていました。>455ではなく>>445でした。
457:デフォルトの名無しさん
12/05/09 22:12:39.05
>>451
買った
458:デフォルトの名無しさん
12/05/10 08:35:57.77
Qt 5も出す出すと、また延期。現状ボロボロだからまたまた延期で、
出ても使えるようになるのは5.1か5.2。
459:デフォルトの名無しさん
12/05/10 18:32:09.70
まるで MS の製品の話を聞いているようだ
460:デフォルトの名無しさん
12/05/10 19:10:20.80
Qt Projectになってから収拾が付けにくくなっているな。Qt 4との互換性も徐々にないがしろにされていっているし。
Troll達がNokiaで生き残るためにはそれしか方法がなかったのだろうが。
461:デフォルトの名無しさん
12/05/11 00:13:16.56
馬鹿には無理
462:デフォルトの名無しさん
12/05/11 14:34:24.48
質問です。
QLineEditを用いて、文字入力をしているのですが
その際、一つ実現出来ない機能があって悩んでます。。。
文字を入力する際、QLineEditに表示されているカーソルを
「|」ではなく「_」にして、線を文字の下に表示するように
したいのですがどうすれば出来ますでしょうか?
また、「_」は全文字ではなく、常にカーソルがある位置にある
文字の下にのみ「_」を表示させたいです。
463:デフォルトの名無しさん
12/05/11 15:11:50.94
アンダースコアが入らないってこと?
464:デフォルトの名無しさん
12/05/11 15:23:11.43
ばかですか?w
465:デフォルトの名無しさん
12/05/11 15:27:56.53
>>463
アンダースコアは入力出来るのですが、
カーソルの位置にある文字の下にアンダースコアが入れられずに悩んでる状況orz
例えば、TextEditに文字が無い場合はTextEditの先頭で"_"が点滅していて、
「a」と入力するとaの下で"_"が点滅。
右のキーを押すと"_"がaの隣に移動して点滅という具合です。
466:462,465
12/05/11 15:31:50.63
>>463
少し訂正です。
「カーソルの位置にある~」と書きましたが、
そもそもEdit上で点滅しているカーソルを"|"ではなく"_"にしたいという考えです。
467:デフォルトの名無しさん
12/05/11 16:07:33.55
QLineEdit の派生クラスを作って、カーソルを自前で描画すればいいのでは?
468:デフォルトの名無しさん
12/05/11 16:23:05.56
>>466
paintEvent()を再実装するのが面倒なさげ
これが参考になるかも
URLリンク(vivi.dyndns.org)
URLリンク(vivi.dyndns.org)
469:デフォルトの名無しさん
12/05/11 16:25:43.66
>>466
これかな
Change QLineEdit text cursor shape | Qt DevNet forums | Qt Developer Network
URLリンク(qt-project.org)
470:462,465
12/05/11 16:39:02.92
>>467
描画して点滅させるってことは、タイマー制御で?
そこまでやらなきゃいかんのか・・・なんておもったら、
どうやらご指摘通りやらないとダメなようですね
(プロパティを変更して終了ってわけではないって事ですな)
>>468-469
参考ページ有難う!
丁度似たようなページ
URLリンク(vivi.dyndns.org)
を見ていて、「幅しか返られないのかぁ」なんておもってたら、
その続きがあったのですね。
参考にさせて頂きます。
471:462,465
12/05/11 18:38:55.33
結果報告
>>468のサイトよりソースをダウンロードし、
それをカスタマイズすることで意図する動作となりました。
有難うございますm(_ _)m
472:デフォルトの名無しさん
12/05/11 21:38:20.94
お役に立ててなによりでござるぞ
473:デフォルトの名無しさん
12/05/13 05:29:52.98
Iビーム
474:デフォルトの名無しさん
12/05/13 14:07:33.12
5年で6割から0に。
URLリンク(blog.goo.ne.jp)
475:デフォルトの名無しさん
12/05/13 15:46:31.29
これは・・・
デスクトップ向けのC++部分はintelが買い取ってくれないかな
476:デフォルトの名無しさん
12/05/13 17:49:23.69
そだね、インテルかIBMがいいね。Google だとバグだらけ。
477:デフォルトの名無しさん
12/05/14 13:41:24.44
macやlinuxでQWinHostみたいなのありますか?
478:デフォルトの名無しさん
12/05/14 14:10:31.83
googleは自社で開発できる能力はなく、買収しかできないからなw
479:デフォルトの名無しさん
12/05/14 14:32:54.40
あります
480:デフォルトの名無しさん
12/05/14 17:41:34.85
やっぱ、最終的に勝つのは、プログラム界のブラジル・Gtkだな・・・
481:デフォルトの名無しさん
12/05/14 18:18:42.41
Phononを使いたくて >>4 の手順でVS版をインストールしたんだけど,
Qt Versions」を開いて自動検出された「PATH に含まれる Qt」をクリックし「MSVC バージョン」を 9.0 にする
って所で自動検出がそもそもされないんだけど…
自分で追加してもデバッグヘルパみたいな項目は全部灰色になって変更できないし,
コマンドプロンプトからqmakeって打つと動くので環境変数は間違ってないはず&
ログオフしてログインしても現象は変わらず.
手動で追加した状態でサンプルを動かそうとしても,ハローワールドは動くけどPhononを使おうとすると,
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall Phonon::VideoPlayer::~VideoPlayer(void)" (__imp_??1VideoPlayer@Phonon@@UAE@XZ) referenced in function _main
とか
18:15:13: The process "C:\Qt\qtcreator-2.5.0\bin\jom.exe" exited with code 2.
Error while building/deploying project te (target: Desktop)
When executing step 'Make'
とかによってコンパイルできないんだけど,解決法知ってる人いる?
64bit win7でVS2010で,Qtに関しては >>4 のリンクのやつを使ってます.
482:デフォルトの名無しさん
12/05/14 19:14:10.26
>>481
>>4のQtってVS2008のだけど2010のやつ使ってる?
483:デフォルトの名無しさん
12/05/15 11:24:55.32
>>482
まさにその通りだった…んだけど,VS2010を入れたら今度は
c:\qt\4.8.1\src\corelib\global\qglobal.h:45: error: C1083: Cannot open include file: 'stddef.h': No such file or directory
って出て来てハローワールドすらできなくなった…
しかもWinSDKとかVSとかをいじってたらコンパネに無いのを削除して下さいとか言われてよくわかんなくなったので再インストールしてきます…
484:デフォルトの名無しさん
12/05/15 11:39:35.53
>>483
pro ファイルを開いて、stddef.h の行があったら、それを削除するとどう?
485:481
12/05/15 13:38:49.19
>>483
proファイルは触ってないのでstddef.hは無かったんだけど,
VS2010を再インストールしたらその問題は解決して,ハローワールドはできたよ.ありがとう.
でもPhononを使おうとすると >>481 と全く同じ症状に戻っただけだった.
エラーはこんな感じ
13:20:54: Running steps for project t...
13:20:54: Configuration unchanged, skipping qmake step.
13:20:54: Starting: "C:\Qt\qtcreator-2.5.0\bin\jom.exe"
C:\Qt\qtcreator-2.5.0\bin\jom.exe -f Makefile.Debug
cl -c -nologo -Zm200 -Zc:wchar_t- -Zi -MDd -GR -EHsc -W3 -w34100 -w34189 -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL (長いので改行)
-DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT (長いので改行)
-I"..\..\..\..\Qt\4.8.1\include\QtCore" -I"..\..\..\..\Qt\4.8.1\include" -I"..\..\..\..\Qt\4.8.1\include\ActiveQt" (長いので改行)
-I"debug" -I"..\t" -I"." -I"..\..\..\..\Qt\4.8.1\mkspecs\win32-msvc2010" -Fodebug\ @C:\Users\username\AppData\Local\Temp\main.obj.612.47.jom
486:481
12/05/15 13:40:29.07
エラーその2
main.cpp
link /LIBPATH:"c:\Qt\4.8.1\lib" /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' (改行)
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" (改行)
/MANIFEST /MANIFESTFILE:"debug\t.intermediate.manifest" /OUT:debug\t.exe @C:\Users\username\AppData\Local\Temp\t.exe.612.1436.jom
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall Phonon::VideoPlayer::~VideoPlayer(void)" (改行)
(__imp_??1VideoPlayer@Phonon@@UAE@XZ) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall QWidget::show(void)" (改行)
(__imp_?show@QWidget@@QAEXXZ) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall Phonon::MediaSource::~MediaSource(void)" (改行)
(__imp_??1MediaSource@Phonon@@QAE@XZ) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall Phonon::VideoPlayer::play(class Phonon::MediaSource const &)" (改行)
(__imp_?play@VideoPlayer@Phonon@@QAEXABVMediaSource@2@@Z) referenced in function _main
487:481
12/05/15 13:41:09.80
エラーその3
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall Phonon::MediaSource::MediaSource(class QString const &)" (改行)
(__imp_??0MediaSource@Phonon@@QAE@ABVQString@@@Z) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall Phonon::VideoPlayer::VideoPlayer(enum Phonon::Category,class QWidget *)" (改行)
(__imp_??0VideoPlayer@Phonon@@QAE@W4Category@1@PAVQWidget@@@Z) referenced in function _main
debug\t.exe : fatal error LNK1120: 6 unresolved externals
jom: C:\Users\username\Documents\t-build-desktop-Qt_4_8_1__4_8_1__Debug\Makefile.Debug [debug\t.exe] Error 1120
jom: C:\Users\username\Documents\t-build-desktop-Qt_4_8_1__4_8_1__Debug\Makefile [debug] Error 2
13:20:56: The process "C:\Qt\qtcreator-2.5.0\bin\jom.exe" exited with code 2.
Error while building/deploying project t (target: Desktop)
When executing step 'Make'
488:481
12/05/15 13:42:57.56
ソースはここのを改変したもの
URLリンク(d.hatena.ne.jp)
#include <QCoreApplication>
#include <Phonon/VideoPlayer>
int main(int argc, char* argv[]) {
QCoreApplication app(argc, argv);
Phonon::VideoPlayer player(Phonon::VideoCategory);
player.play(QString("./gumi.mp4"));
player.show();
return app.exec();
}
ググって見つけた別のPhononサンプル
URLリンク(twolinux.blogspot.jp)
もほぼ同じエラーになります…
489:デフォルトの名無しさん
12/05/15 14:34:28.80
URLリンク(qt-project.org)
こういうのとか読んでみた?
Phonon使うには.proファイルに
QT += phonon
を加えてPhononモジュールをリンクしないと使えないよ
490:481
12/05/16 10:37:44.52
>>489
!!!!動きました!!!!
なるほど、
URLリンク(qt-project.org)
に書いてあるもののうち、 QtCoreとQtGui以外のモジュールを使う場合には、
.proファイルにそれを書き込む必要があるんですね。
こんな初歩的な質問に答えて頂きありがとうございます。
491:デフォルトの名無しさん
12/05/18 01:17:14.81
Qt 4.8でinitializeGLFunctionsで落ちるんですが原因わかりますでしょうか?
492:デフォルトの名無しさん
12/05/18 02:21:16.37
環境くらい書けよ
493:デフォルトの名無しさん
12/05/18 06:49:21.39
環境
494:デフォルトの名無しさん
12/05/18 08:56:36.00
>>491
プロジェクトのオプションで、実行環境がデフォルトのビルド環境になっているとエラーが出る。
システムか、クリーンにするべし。
495:デフォルトの名無しさん
12/05/18 08:56:51.68
4.8.0以降はglut全滅。というかincludeすらしてないよ。
4.7.4にもどしたらいい。
496:デフォルトの名無しさん
12/05/18 14:00:54.98
>>495
プラットフォームに合わせて、GLUT/glut.hかGL/glu.hをincludeすればglutは使えるし、
QMatrix4x4などでglutを使っているのを書き直せばglutなしにもできます。
497:デフォルトの名無しさん
12/05/18 19:05:25.50
今一番安定なのは4.7.4かな
498:デフォルトの名無しさん
12/05/19 01:32:03.72
>>494
ありがとうございます
QGLContextがNULLだったのが原因ぽいです
499:デフォルトの名無しさん
12/05/19 19:05:55.28
Windows8でタブレット式になったら、Qtで作ったGUIアプリケーションも
動くのかな?
500:デフォルトの名無しさん
12/05/19 19:15:30.56
動かないしタブレット関係ないから手を出さなくていいよ
501:デフォルトの名無しさん
12/05/19 19:46:56.74
え?まじで・・・
Qtでタブレットアプリ作れるのはいつやら・・・
502:デフォルトの名無しさん
12/05/19 20:33:43.48
KDEタブレットがあるじゃないか
503:デフォルトの名無しさん
12/05/19 20:48:03.48
>>501
Nokiaが関わる以上だめたね。QtはNokiaに潰された。
504:デフォルトの名無しさん
12/05/20 01:54:17.51
Nokiaももうすぐつぶれる
505:デフォルトの名無しさん
12/05/20 02:35:06.96
年末迄持たないだろうね。
506:デフォルトの名無しさん
12/05/20 20:33:36.31
すなおにアンドロイド機種だせばよかったのにね
507:デフォルトの名無しさん
12/05/21 14:47:43.23
QTableWidgetで列の幅の自動調整はできませんか?
ラベルにあわせたり、テーブルの横幅に合わせて等幅にしたりしたいです
508:デフォルトの名無しさん
12/05/21 15:03:13.48
QAbstractItemDelegate::sizeHintとか
509:デフォルトの名無しさん
12/05/22 21:02:45.57
Qt Projectは、Nokiaに見放されようとしているTrolltechの開発者の逃げ場として考え出されたもので、
Qt 5でサポートされる機能も、Nokiaに拾ってもらおうとしているものだけをやろうとしている。
それ以外のものは、オープンソースにしたので、メンテナがいないからサポートされないと逃げている。
510:デフォルトの名無しさん
12/05/24 06:14:53.63
すっごい初歩の質問で申し訳ない
すでに最新のMinGWはインストールされてるんだけど
QtSDK付属の古いMinGWを一緒に入れてQtからはそっち使うようにしたほうがいいんかな
511:デフォルトの名無しさん
12/05/24 06:40:35.38
なんだオワコンか
512:デフォルトの名無しさん
12/05/24 14:59:57.45
勝手に買収しといて、ポイ捨てとは・・
Nokiaに殺意すらおぼえる。全Qtプログラマーの恨みをひとえに買うことだろう。
513:デフォルトの名無しさん
12/05/24 15:15:34.21
iPhoneもAndroidも使えないマルチプラットフォームって
514:デフォルトの名無しさん
12/05/24 20:05:43.19
4.7から4.8にしようと思ったら変わり過ぎてて死んだ。他の皆はスムーズに移行できてるんだろうか。
515:デフォルトの名無しさん
12/05/24 20:22:50.97
20レス位上
516:デフォルトの名無しさん
12/05/24 20:47:34.87
4.7.4がこの先10年使われるようになるとは
まだ誰も思ってなかった
517:デフォルトの名無しさん
12/05/25 03:23:59.11
p = fork(qt);
assert(p->version <= 4.7);
518:デフォルトの名無しさん
12/05/25 08:00:01.30
>>513
>iPhoneもAndroidも使えないマルチプラットフォームって
この2つを正式サポートしないというのはとってもおかしい。
519:デフォルトの名無しさん
12/05/25 08:10:50.44
リナザウみたいにQtを根底から使うならともかく
アプリケーション毎に数10M余計に配布するなんてアホみたいだからな
520:デフォルトの名無しさん
12/05/25 14:59:41.74
いやQt for Androidはランタイムはランタイムだけで1パッケージになってる
521:デフォルトの名無しさん
12/05/25 17:07:36.22
今時「ランタイムを別途インストールしておいて下さい」なんてもっとありえないわ。
522:デフォルトの名無しさん
12/05/25 17:44:39.17
自動的にインストール画面になる
とりあえず知らないなら語るな恥ずかしいから
523:デフォルトの名無しさん
12/05/25 18:35:00.16
Qt for Androidってどのくらいできてんの?
524:デフォルトの名無しさん
12/05/25 19:33:50.56
>>522
自分の説明不足を勝ち誇られても
525:デフォルトの名無しさん
12/05/25 19:59:50.17
別に君が素晴らしいシステム作ってコアメンバーと協議の上マージしてもいいんだよ?w
526:デフォルトの名無しさん
12/05/25 22:13:28.70
身売りしなければ自ら手をつけたが、妨げになるから直接手を出さないのだよ。
527:デフォルトの名無しさん
12/05/25 22:22:07.54
>>523
アクセラレーションが効かない程度
528:デフォルトの名無しさん
12/05/28 19:01:01.61
>>521
>今時「ランタイムを別途インストールしておいて下さい」なんてもっとありえないわ。
Windowsではそうするのがずっとそして今も当たり前。
529:デフォルトの名無しさん
12/05/28 19:35:03.88
>>528
Windowsで商用ソフトの場合インストーラーでそこを解決するからね。
フリーウェアとかだと「~ランタイムが必要なのでインストールしてください」とか書いてあるのが多くて、イマドキの大多数のユーザーはそれ無理だろといつも思う。
今はアメーバピグが必要なflashランタイムのバージョン上げただけでどうすれば良いのかわからないユーザーが大量に出て阿鼻叫喚の騒ぎになる世の中。
530:デフォルトの名無しさん
12/05/28 19:55:44.63
だからと言って
popup出てきたらとりあえずインストール続行してください
とか勝手に習慣付けてしまうと
ウィルスやスパイウェアの蔓延につながる
531:デフォルトの名無しさん
12/05/28 20:01:25.75
だから多少配布サイズが大きくなろうが必要なランタイムはインストーラーに全部入りで配布されるのがwindowsでは主流になってる訳で。
それが気持ち悪いとか無駄だとか思ってしまう人間はこっちの側の人間だから、大多数の物のわかってないお客様に合わせるしかない。
532:デフォルトの名無しさん
12/05/28 22:00:19.35
スラド民はどっかいけ
533:デフォルトの名無しさん
12/05/28 22:56:48.90
また奴らがなにかやらかしたのか
534:デフォルトの名無しさん
12/05/29 10:46:50.33
>>531
だって開発ソフトの話だろ?
C++でプログラミングする奴が別途インストールに抵抗あるってのはわけわからんぞ
535:デフォルトの名無しさん
12/05/29 11:09:13.87
いつからそんな話に
536:デフォルトの名無しさん
12/05/29 13:27:21.90
>>535
520
537:デフォルトの名無しさん
12/05/29 13:42:59.30
現在フォーカスしてるエリアごとにメニューバーに表示されるメニューを動的に消したり現したりしてるんですが
menuBar()->addAction( menu )
の処理が重いらしくフォーカスかえるごとにラグが発生するんですがこれって普通でしょうか
insertActionやmenu->menuAction()->setVisible(bool)でも同様に処理が遅くなるんですが
menu->addActionでは全く処理が遅くなりません
538:デフォルトの名無しさん
12/05/29 13:45:31.31
>>536
それは開発ソフトの話じゃなくてエンドユーザーに配布する時の話じゃないのか
539:519
12/05/29 16:06:09.46
みんなごめんよ…
540:デフォルトの名無しさん
12/05/29 16:22:35.27
>>537
XPでmenu->menuAction()->setVisible(bool)使ってるけど重くないよ
そっちの環境は?
541:537
12/05/29 16:25:51.91
>>540 Windows7 64bit
新規に立ち上げてmenuBarに追加なりしてみたけど
そっちのほうでは処理落ちがないみたいなので
どこか干渉してる気がしないでもないですけど
やってることはmenuBar()->addAction()だけなのに何故処理落ちがするんだろう
542:デフォルトの名無しさん
12/05/29 17:35:12.43
>>539
謝る暇があったらどっちの話だったのかはっきりさせてよ。
543:デフォルトの名無しさん
12/05/29 17:59:04.57
こんなん利用者側の話に決ってんだろ、コード書けて自分で遊ぶならその位できて当たり前
C++はシグネチャがちょっと変わっただけで死ぬんだから
面倒なビルド・バージョン管理をカジュアルユーザーに任せる事はできない
結局マイナーなQtではアプリケーション毎にほぼ静的リンク状態で配布する事になりストレージを圧迫する
Qtは一発物のアプリケーションや組み込みシステムの一部を短期で作るにはいいものだと思うけど
不特定多数しかもスマホに配布ともなると無理があるよ今の状態では特に
俺はスマホターゲットなら素直にObjCやJavaで書くかな互換性の保証は正式なベンダに任せりゃいい
つかねスマホでこんな面倒な事をしたら☆一付けられちゃうぞ
何が言いたいかというとNokia氏ね
544:デフォルトの名無しさん
12/05/29 19:08:47.05
☆1どころかインストールすらしてもらえないよ。
545:537
12/05/29 19:29:04.75
QMainWindowのrestoreState()を削除してみたら処理落ちが消えました
iniファイルが膨大な量になってたのが関係してたみたいです
546:デフォルトの名無しさん
12/05/29 20:45:16.15
デフォルトはレジストリなので大量だとおかしくなる気がするけれど、
iniファイルにするように変えているなら、大量でも問題なさそうな気がする。
547:デフォルトの名無しさん
12/05/31 00:29:50.20
後免奈半利線
548:デフォルトの名無しさん
12/05/31 13:44:31.55
Qt CreatorでVC++のコンパイラを使ってるんだけど
/MTとかコンパイラオプションを指定したい場合はどこですればいい?
549:デフォルトの名無しさん
12/05/31 15:14:48.61
>>548
proファイルに以下の行を追加
QMAKE_CXXFLAGS += 追加のコンパイラーオプション
QMAKE_LFLAGS += 追加のリンカーオプション
QtCreaterのデフォルトのオプションが気に入らない場合は += ではなく = にして自分で全て設定する。
550:デフォルトの名無しさん
12/05/31 16:23:55.42
>>549
レスありがとう。
レスを参考にやってみたところ、VC++でいう/NODEFAULTLIB:**はできました。
まだLNK2005エラーが出ていますがなんとかなりそうです。がんばります。
551:デフォルトの名無しさん
12/06/01 15:24:52.75
今からQt覚えて人生ウハウハになるかな?
552:デフォルトの名無しさん
12/06/01 15:32:19.79
ならない
AndriodとiOSをサポートする予定のC++Builderの方がまだいい
553:デフォルトの名無しさん
12/06/01 15:32:53.35
俺はC++Builder買う金ないからQt使い続けるけど
554:デフォルトの名無しさん
12/06/01 20:03:29.64
残念だけどQtは負け組み
悪貨は良貨を駆逐する
555:デフォルトの名無しさん
12/06/01 20:24:21.14
ここが被害担当艦なのはわかるんだけど
みんな今はどこでQtの話してんの
556:デフォルトの名無しさん
12/06/01 20:25:02.04
設計がいきあたりばったり感が満点だしな
557:デフォルトの名無しさん
12/06/01 22:12:51.99
C++ BuilderはBorlandを離れてから腐りきったな。バグ多いし、ドキュメントは
無茶苦茶。
558:デフォルトの名無しさん
12/06/02 00:06:41.79
なんかwin8で劇的にwindowsプログラミングの構造が変わりそうだな
MFCなんて勉強してる場合じゃないな
559:デフォルトの名無しさん
12/06/02 02:01:12.84
Win8が出なくてもさすがに今時MFCを勉強してる場合ではないですよ?
560:デフォルトの名無しさん
12/06/02 02:39:44.63
VS2012にもしっかりMFC入ってたしインストール項目の大項目の一つになってたけどな
561:デフォルトの名無しさん
12/06/02 02:49:23.57
じゃあMFC勉強した方がいいね。Feature Packも
562:デフォルトの名無しさん
12/06/02 10:39:05.06
ぶっちゃけこれからはWebの時代だからC++自体がダメだろ
JavaScriptとPHPの勉強しないと負け犬一直線
563:デフォルトの名無しさん
12/06/02 15:34:21.21
JavaScriptとPHPの勉強してたら負け犬一直線
564:デフォルトの名無しさん
12/06/02 15:37:38.80
WTLはあってもMFCは無いは~
565:デフォルトの名無しさん
12/06/02 15:39:59.41
>>562
んなもん派遣にやらせりゃいいような雑用だから
まとまった金にならん
566:デフォルトの名無しさん
12/06/02 15:42:20.65
LLジャンキーは死滅しねーかなDSL並の糞言語ばかり作りやがって
567:デフォルトの名無しさん
12/06/02 15:47:51.51
>>566
C, C++にすんなCやC++みたいなLLがあるからこそOSがまともに動くんだぞ
JavaやC#みたいなHLで作ったOS見てみろできたには出来たらしいが
遅すぎてマトモに動きはしない。Javaで書いたOSに至っては、
アセンブリが多すぎて見るに耐えん。