【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】
http://toro.2ch.net/test/read.cgi/tech/1313727889/
Windows ユーザー向け Tips ・プロジェクトのパスに日本語を入れちゃダメ ・日本語のソースコードは、MinGW版ならUTF-8、VC版ならSystem(Shift-JIS) プロジェクト作成後に「プロジェクト」タブの「エディタの設定」→「デフォルトの文字コード」 ・デバッグ出力などが文字化けする場合、プログラムの最初で文字コード変換設定をする QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8")); //ソースの文字コードを直接指定("utf-8"や"Shift-JIS") // QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); //システムロケールの文字コードを指定 QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); //翻訳用マクロ tr()の文字コード qDebug() << "うまく表示できた?"; ・MinGW版配布時は mingwm10.dll も一緒に入れる(public domain。配布上の制限はない)
QDialog内でのQTextbrowserを使って、テキストデータを表示しているんだけど、すごく表示が遅い。 別にコードを書く必要もないと思うけど、こんな感じで、ただテキストファイルを読んで 表示させてるだけ。 QTextBrowser b; QFile f(filename); f.open(QIODevice.ReadOnly); QString text = f.readAll(); f.close(); b.setText(text); ファイルはまあそれなりに大きいといえば大きんだけど、1Mbyte程度。 だけど、ダイアログの移動さえ遅くなる。 QTextBrowserが遅いのか、ファイルの読み込み方が悪いのか、QDialog自体に問題があるのか よくわからなくて困っています。処理を速くするにはどうしたら良いんでしょうか? Qtって小さいシステムでしか使えないんじゃないかと疑っているんですが、そんなことはない?
コピーが3回
QString &text = f.readAll();
1MB位のコピーなんてたいしたことないだろ それよりsetPlainTextにしたほうがいいんじゃね?
>>8 QStringはimplicit sharedなので、QStringの文字列データ部分のコピーは0回です。
>>9 同じ理由で、&の有無は影響しません。
1Mバイト程度のテキストファイルを表示させるのが遅いのか。 Qtには速度、メモリ消費に決定的な欠点があるのかもな
QWebView使ったら?
14 :
デフォルトの名無しさん :2012/02/20(月) 07:42:58.56
>>7 まず、プロファイルを取って、どこで時間がかかっているかを特定する。
>>12 憶測で判断しない。
>>7 環境とソース(全部)を貼れ
大抵は素人が関係ないと思ってるところに原因がある
まちがえた x 素人 o 本人
ダイアログの移動さえ遅くなるってのが問題だな そのコードは処理終わるまで制御返さないから、どんなに重くてもダイアログの移動には影響を及ぼさないはず ユーザのコードに原因があるとすれば、Event系で重い処理をさせてるんだろう
と思ったけどそういえばQtは仕様違ったような気がして試してみたら、 setTextに大きなデータ表示させると一部だけ表示して一旦制御を返してからバックグラウンドで残りを処理してるね この処理中は確かにスクロールもダイアログの移動も重いわ うちのデスクトップでは5MのHTMLファイルでも3秒未満で終わったけど
ファイル選択ダイアログを表示するので重くなった経験ならあるけどな。 多分選択ダイアログ表示の時に何かをダイナミックリンクをしているからだと思うけど。 同じような理由で、plug-inは、初回は重い。 あと、OpenGLのコンテキストの切り替えで重くなる。chromeがWebGLに対応して、 積極的にGPU使うようになってOpenGL使う他アプリとの切り替えが重くなった。 それから、間違ってバイナリファイルを開いた時のように、改行が殆ど無いときは、 スクロールが重くなる。
>>19 ああ、これっぽいかも。
表示領域ではすぐに表示されるけど、スクロールも受け付けないし、
ダイアログの移動も受け付けないって状態。
そうかあ、setTextはそういう処理をしてるんですか。
もしかしてQtのソースを読んだんですか?
うまく処理できる他の手はあるんだろうか?
あ、ちなみに、私はプアなマシン(WindowsXP、Pentium4、2Gバイトメモリ)では、結構きつい。
QPlainTextEditは、単純には断言できないけど 少なくともGTK+より格段に速い動作だった。 50MBくらいのテキストファイルをほぼ一瞬で開いてたぞ。
QTextBrowserはリッチテキストやらの特殊なテキスト表示用 QTextEdit とその派生クラスは実装された時期が古いので QPlainTextEditよりかなり遅いかも
>>23 QPlainTextEditは大丈夫?
最初の「表示領域にだけは」すぐ表示されても、
スクロールやダイアログの移動を受け付けないってことが問題なんだけど。
スクロールやダイアログ移動もちゃんとすぐに受け付けてくれるのかな。
26 :
23 :2012/02/21(火) 00:24:55.80
>>25 スクロールバーもダイアログも
>>19 のようにはならない。
テキストエリア真っ白のまま一瞬待たされたあと
一気に表示される。スクロールバーは表示された時点でほぼ縮まりきっているし
表示が済んだあとは普通の挙動。
で、なんで挙動がちがうんだと思ったら、setTextじゃなくて
setPlainText使ってたわ。あとメモリ8GBのi7マシンなのも影響してるかも。
役に立ちそうもなくてスマソ
いえいえ。
ちなみに、QTextBrowser でも、スクロールバーは最初から縮まりきってるんだけどね。
だから、一見、全部読み込んでしまってるのかな、と勘違いをしてしまうけど、
>>19 の言ってるように、処理が完全に終わってないから、
表示エリアのスクロールバーをクリックしても、ドラッグしても、すぐには受け付けない状態。
根本的な解決じゃないけど ハイパーリンクがあるドキュメントとかでQTextBrowserをどうしても使いたいなら QTextBrowser::setText()の前でカーソルを砂時計にするとか特定のWidgetをDisableにするとかしちゃって QTextBrowser::document()で取得したQTextDocumentオブジェクトのcontentsChanged()シグナルで元に戻せば テキストの成形中の操作をさせなくはできるかも
PySide楽しすぎワロタ
30 :
デフォルトの名無しさん :2012/02/22(水) 11:27:03.63
それはよかった
Qtで作ったアプリを配ってるんだが(Windows)、最初の立ち上がりが結構遅いみたい。 ライブラリのロードに時間がかかってるのかなあと思ってるんだけど、 立ち上がりを速くするにはどうしたら良いんだろう。 あと、例えば、最初にファイル選択ダイアログを表示する時にも、ちょっと遅いよね。 あれってどうしようもないのかな。結構、欝になる。
俺の実装がまずいのかと思ってたら、似たような問題抱えてる人いるんだな
.NET系やJava系よりはずっと早いんだけど DelphiとかMFC製のネイティブアプリと比べると、体感できるくらい遅いよな
UPXで圧縮すれば多少早くなるかもしれない CPUが遅いと余計遅くなるかもしれないけど
>>31 必要なライブラリを使うダミーのプログラムを作って
サービスとして登録しておけば委員で内科医
遅いってどのくらい遅いの?自分は体感できないな 最小限のプロジェクトでQWidgetをshowするだけのプログラムでも遅いの? 使うライブラリによっては、mingwコンパイルするよりvcコンパイルしたほうが立ち上がりが早いことはある
QtCreatorの立ち上げからしてもっさり
インストールも時間かかりすぎ 170Mのファイルインストールで1.5GBってでかすぎ
あれはadobeがする
GTK+みたいにGUI部品のツールキットとして始まってるわけだから Win32ネイティブなGUI部品をそのまま使うやつに比べれば重いし ファイル容量が大きくなるのは当たり前。(それでもDelphiより重いかなあ) 無意味に.NETなアプリケーションが増えている現在速度はあまり気にしてなかったが 同梱しなきゃなんないdllのサイズは頭が痛い。 けどファイルダイアログなんかはWindowsのをそのまま使ってるんじゃなかったっけ?
41 :
デフォルトの名無しさん :2012/02/23(木) 10:42:40.15
>>31 そんなに重いか?
VS2008のコンパイラでビルドしたexeだけど,PC起動して最初に立ち上げても
2〜3秒でメインフォームが表示されるよ。フォーム上に何十個かのウィジットが
あるけど。
起動時に何か処理が入ってない?
そもそも組み込み用途でショボイCPUでも使われてるわけで,PCでやたらに遅かったら
組み込みでは使い物にならないと思うが。
>>40 ファイルダイアログは,Windowsネイティブのものと,Qt独自のものが選択できる。
>>31 の話はどっちかな?
実際に使用する部分だけをdllにしてくれるようなツールがあればいいのに
VCで静的リンクすると、ただフォーム出すだけのアプリでどんくらいのサイズになるのかな
>>41 > ファイルダイアログは,Windowsネイティブのものと,Qt独自のものが選択できる。
選択できる?
オンラインマニュアルには、Windowsの場合、スタティックな関数
QFileDialog::getExistingDirectory
QFileDialog::getOpenFileName
QFileDialog::getOpenFileNames
QFileDialog::getSaveFileName
では、nativeのファイルダイアログが使われるようになっている
って書かれてある。
選択できるとは書かれていない。
もともと、普通に使っていれば、nativeなファイルダイアログが表示されるはず。
QFileDialog *dialog = new QFileDialog; dialog->show(); これはQt独自
スタティックな関数でないほう(インスタンス作ってexec())を使うと 常にあの微妙なダイアログが出てるから選択できるんじゃないのか
QFileDialog::DontUseNativeDialog 使ったことはないが。
オブジェクト指向なライブラリは重い気がする
キモオタニート
>>45-46 ああ、そういうことか。
わざわざそっちの方を使う人もいるのかな?
がっつりカスタマイズしたいときとか、クロスプラットフォームなソフトだと便利なこともある
ソフトの挙動がOSごとに異なるのはサポートが面倒な場合があるかもね
FireAlpacaが話題だねぇ
こんなところまでステマか
55 :
41 :2012/02/24(金) 06:06:34.62
>>44 ,
>>50 ドキュメントの読み方が浅いよ。
>>47 が正解。
QFileDialog::getOpenFileName()とかのスタティック関数でも,最後の引数
(Options)に指定できる。
だいたいさぁ,やってみたことあるから書いてるに決まってるじゃないか。
良く調べもせずに噛み付いて恥ずかしくないか?
C++でプログラム書くのを覚えるとCでプログラム書くのは無理 Cを読むくらいならできるけど、Cで書くなんてバカらしくてやってらんない
How To Become A Hacker
http://cruel.org/freeware/hacker.html もしコンピュータ言語をなにも知らないなら、まず Python から始めることを
おすすめします。設計がきれいだし、ドキュメントもしっかりしているし、
初心者にもそこそことっつきやすくできています。でも入門言語として最適でも、
おもちゃではありません。強力で柔軟で、大きなプロジェクトにもじゅうぶん
対応しています。
Java もプログラミングを学ぶにはよい言語です。 Python よりはむずかしい
ですが、できるコードは Python より高速です。二番目の言語としてはとても
すぐれていると思います。
本気でプログラミングをするなら、C を勉強するしかありません。これはUnix の
中核となる言語です。C++ は C と密接な関係にあります。片方を知っていれば、
もう片方を学ぶのはそんなにむずかしくありません。が、どっちも真っ先に
勉強しようとするのには向いた代物ではありません。
c++なんてどこまでいっても便利でカオスなCじゃん Cでキッチリかけないやつなんてわかってないだけ
C++使わないでCでプログラムをするのは 足を使わないで自転車に乗るようなもん 出来ないことはないが馬鹿らしくてやってられない
CとC++の話は別にどうでもいいですん
すん
>>41 ずいぶん偉そうな言葉遣いだな。
プログラムの前に日本語を覚えなw
CとC++のどっちがいいかなんて無意味。 目的のためなら利用できるものは何でも利用するべきなんじゃないのかな。 でも、はっきり言って、Cでまともなプログラムが書けない人は やっぱりC++でもまともなプログラムを書いてないよね。 危なっかしいプログラムを平気で書いてる。
ってか、Qtは大抵の人が安全に使えるから人気があるんだろうね。 そのぶん、パフォーマンスが落ちてるような気がするけど。
66 :
名無しさん :2012/02/26(日) 11:58:23.71
検索エンジンも業務効率の改善にいそいでいる。
>>31 ,
>>32 ,
>>33 同じく。QtFileDialogのスタティック関数を使ってるけど、最初使うとき体感できるほど遅いね。
dllのロードに時間がかかってるんだろうな。
ウインドウを不活性にして読み込み中・・・みたいなダイアログ?を表示したいんですけどどうしたらいいでしょうか
adobeはflashの役割をhtml5にとられるだろうけど、 そのうち、photoshopをarchemyで実装しだすと思う。 javaもc#もクロスプラットフォームなRIAとしては今一な感があるし、 コアなロジックなんかはc++で書いた方がよほどコードをつかいまわせる。 余ったflash技術者にプレゼンテーション層をまかせるとなれば、 今後はqtの採用が減るんじゃないだろうか
なんか最近見るスレ見るスレで フォトショ関係のオナニー長レス見かけるんだけど…
>>69 Qt 5の開発が遅れ気味で、安定するのにも時間がかかるだろうから、新機能は当分使えない。
Qt 4の改良は止めてしまっていて、同じく目新しいことはない。
Qtが停滞している間に、他のものを使うようになる。
qt5はコアな部分から最適化のためにかなりいじってるみたいね
他のものの候補ってナニ?GTK位しか知らないんだが
どーせいつものアンチNokiaの粘着だろ
>>75 要するにボタンのないモーダルダイアログを表示して、プログラムのコードで閉じたいって
ことだよね?
それならQDialog::open()を使えば良い。この関数はダイアログをモーダル表示して
すぐにリターンする。閉じる時はclose()で閉じる。
VS11のExpressEditionはWin8専用で、Metroアプリしかビルドできないみたいだぞ 競合IDEメーカーがいなくなったからPro以上を売りたいのかも知れないが Qt Creatorの存在をお忘れだったようだな!
いいかげん板違い。マ板にでも行って分かったようなこと語っててくれ
Nokiaの腰巾着よりまともだな。
ソースから特にオプションをつけないでビルドしたら30GBになってしもた 気をつけてね
サイズを小さくするには どんなオプション付けるん?
QT初心者だが、 qmake -project qmake make ってやったら don't know how to make 'FORCE' と出たんだが。
noDebug
>>82 pdbファイルがでかいので-nomake samplesなのかも
Qt初心者です。 resizeEventに関して質問があります。 QPlainTextEditにでかいファイルを読み込ませた状態で 「MainWindowのサイズを変更したことによる リサイズイベント」が発生すると、非常に処理が重いです。 - イベントの発行数を減らす - qsplitの子ウィジェット感のサイズ変更のように、 サイズ変更が終了した時だけ描画する などで対処したいのですが、何か良い方法はありませんか。 現在の第一候補はQPlainTextEditの resizeEvent のオーバーライドで、 イベント発行数を1/5ぐらいにする方法です。 (親クラスのリサイズの呼び出し回数を減らす) ただ、問題もありそうなので、もっと良い方法を探しています。 アドバイスいただけないでしょうか。 よろしくお願いします。
>>87 > QPlainTextEditにでかいファイルを読み込ませた状態で
> 「MainWindowのサイズを変更したことによる
> リサイズイベント」が発生すると、非常に処理が重いです。
リサイズイベントハンドラのソースは以下のようになっています。
if (e->oldSize().width() != e->size().width())
d->relayoutDocument();
たぶん、relayoutDocument() で右端で折り返す処理を行なっているんだけど、
行数が多いとこれに処理時間がかかってしまうんだと思う。
表示されている部分だけをレイアウト処理して、それ以外はマルチスレッド化
するといいとは思うけど、対処はかなり難しいと思う。
初心者質問ですんません エンターを押下したら特定のプッシュボタンをクリックしたのと同じ効果となる方法ってありますか?
>>89 > エンターを押下したら特定のプッシュボタンをクリックしたのと同じ効果となる方法ってありますか?
keyEvent() で エンター かどうかを判定し、そうなら プッシュボタンの clicked() シグナルを
エミットすればいいんじゃね?
>>90 clicked()シグナルのエミットのみでは、クリックしたのと同じ効果にはならないし、
エンターの判定には、どこにフォーカスがあるかどうかも考慮する必要があります。
>>89 プッシュボタンのanimateClick()を呼べばクリックしたのと同じことになります。
例えば、どこでもよいからエンターを押したのを判断するならば、QApplicationにイベントフィルターを設定して、
エンター押下を判断して、特定のボタンに対して、animateClick()を呼べばよいでしょう。
>>89 QDialogだけかもしれないけど、QPushButtonのdefaultをtrueにすれば良さそう。
>>92 QLineEditなどがあったらダメでしょう。
Qtwebkitの開発停滞してんなあ
ちょっと質問。 QListとかQHashなどのコンテナってスレッドセーフにできてるんですか? 自分の作ったものじゃないウィジェッドを使ってプログラムを作ってる最中なんですが、 スロットの中で、QListのメンバ変数にデータを追加する時に、 アクセスエラーと言われて落ちてしまいます。
基本的にドキュメントにスレッドセーフってわざわざ書いてないものについては 自動で排他制御したりはしてくれないので 別スレッドからインスタンスに触るときは、QMutexLockerなりなんなりで保護しないとダメです
ありがとうございます。なるほど・・・。 QMutexLockerってものがあったんですね。
オープンソースのものをとりあえずコンパイルしてみたいという段階の初心者なのですが、 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) これはどう言ったエラーでしょうか mingwとgccでcmakeしろと書いてあったのでやってみています。 エラー文でclがないとエラーが出たのでvisual studio expressを入れて、 次はqtがないとエラーが出たのでqt sdkを入れてみました。 エラー文はqtとvisual studioは競合しているように言ってるように思うのですが・・
99 :
98 :2012/03/08(木) 05:21:04.47
qt sdkでないqtを入れてみたら先に進みました 失礼しました
ありがとう
Designerへのプラグインの登録についての質問です。 Linuxで自分の作成したプラグインをDesignerで使用するには /usr/lib/qt4/plugins/designerに放りこめば使えるようになりました。 ただこれにはroot権限が要る為、 一般ユーザがそのユーザのみで使用する場合は どのようにDesignerにpluginを登録すれば良いでしょうか。 何かパスを通すなどで解決するのでしょうか。
QStringList QCoreApplication::libraryPaths() { const QByteArray libPathEnv = qgetenv("QT_PLUGIN_PATH"); とあるんで、試してないが、環境変数のQT_PLUGIN_PATHにパス追加しておけばいける
>>88 アドバイスありがとうございました。
とりあえず「折り返しなし」にしたら問題がマシになりました。
調査していてわかったのですが、どうやら Mac かつ plastiqueStyle で
QTreeWidget が重いというバグに関わっているようでした。
描画スタイルをMacやMotifにしたら、だいぶ早くなりました。
QLabelにあるテキストを ドラッグで範囲指定して、コピーできないもんですかね。 ぐぐったら継承して対応するというような意見があったのですが、 もっといい方法がありそうな気がします。。。。 なにか知っていらっしゃいますか。
>>104 textInteractionFlagsプロパティに、Qt::TextSelectableByMouseを指定すると出来る。
107 :
デフォルトの名無しさん :2012/03/10(土) 16:59:05.47
あるPCでは正常に動作するQtのアプリが他のPCの同様な環境では ?fromWCharArray@Qstring@@SA?AV1@PB_WH@ZがQtCore4.dllに無いという エラーメッセージで落ちてしまいます。ググっても同じように泣きを 入れている人がいるのですが解決方法が見出せません。 動作しない環境でコンパイルしなおしてもやっぱり同じエラーで落ちます。 誰か助けて。 Windows7とかWindowsXPで複数のPCで試しました。 それぞれの複数のPCでVisualStudio2005とVisualStudio2010の両方で試しました 規則性はないような感じです。
>>107 違うバージョンのQtCore4.dllがロードされているんじゃないか
>>102 返事が遅れてすみません。
~/qp/myplugin/myplugin.pro というプラグインが在る所
$ env QT_PLUGIN_PATH=~/qp/myplugin/plugin qtcreator
と起動することで確かにプラグインが追加されました。
ありがとうございました。
111 :
110 :2012/03/11(日) 18:26:01.35
絶対パスだと長くなるので相対パスで書いたのですが、 相対パスでは動きませんでした。 失礼しました。
112 :
108 :2012/03/11(日) 19:46:07.03
>>109 QtCore4.dllは1つしかないのでそれはありません
結局Qtのコンパイルを、動作しないPCの環境で行ってからアプリケーションを
再コンパイルして解決しましたかが、釈然としません。
>>108 これだとコンパイル時にわかるだろうね
2005と2008のQtCore4.dllをごっちゃにしてるんじゃないかな
gccとかmingw のバージョン違いでもおかしくなることあるよ
win7の32bitで動いた場所とディレクトリから、64bit(別PCでコンパイル)のdllを取ってきても動かなかったりしたなぁ。 えらい悩んだが、Qt Creator で動いたのなら、どこかに必要な dll は必ずあるはず。
mac OSX, pyside 1.1環境でQGLWidgetのrenderTextを呼び出すと以下のようなエラーを吐いてプログラムが落ちてしまいます。 Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000 Crashed Thread: 0 Dispatch queue: com.apple.main-thread また、C++で同様にrenderTextを呼び出した場合はエラーは起こりませんが、テキストは表示されません 解決方法が思い当たる方、同じようなエラーが起こる方、レスをいただけると嬉しいです。
QtwebkitでQtTestbrowserをもとに簡単なブラウザようなものを作成したのですが どうにも自分のwin環境だと日本語入力が正常に行えません 調べてもissueも出てないし日本語圏で誰も問題にしていないので自分の環境だけなのかな〜と思ったのですが 自分以外の環境でも問題再現するようでしたらQtwebkit Projectにissue投げたいのですがいかがでしょうか?
前にテキストエリアとかで漢字変換すると WebKitが死んでしまうって話しは出てたな
メーリス見たところWebkitが落ちるだか画面暗転?するバグは直ってるっぽいですね Aroraあたりのqtwebkitがっつり使ってるブラウザもテキストエリアでキャレットが動かないなどの不具合ありました メーリングリストに投げた方がいいんですかね……?
4.7.3で問題なく動作していたソフトが4.8.0では正常に動作しなくなりました。 色々調べてQNetworkAccessManager::postの実行時にQNetworkReply::UnknownNetworkErrorが起きていることが分かったのですが、 QNetworkReply::UnknownNetworkErrorってどんな原因が考えられるんでしょうか? ちなみに、QNetworkAccessManager::post実行後にネットワークアクセスは発生していません。 そしてエラーを無視して同じ引数で再度postを実行すると問題なく動作します。
色々と調べたところQtwebkitの処理周りのバグはWebkit Bugzillaになげるべきらしいですね… 自分はレポートはできてもリテストできる環境にないのでどなたか投げといてくれると嬉しいです
うちの環境では(XPで4.7.4)は特に問題なかった
アプリケーションをインストールした後、PCで初めて起動する時にだけ、 特定の処理を行いたいと思ってます。 Qtでの定番のやり方ってありますか? やろうと思えば、いくらでもやり方はあると思いますが、 Qtでいい方法が用意されているのならそれを使おうかな、と。
macでQt使ってるんだが、Qt Creatorにアップデートしろって表示されたから アップデートしようとしたら以下のように言われる。 You need a C++ compiler to be able install the Qt SDK. Please install the latest Xcode first before invoking this installer. でも、Xcodeの4.3.1はインストール済みだし何がおかしいんでしょうか?
>>122 ありがとうございます
Vistaと7、Qt4.8で再現するバグですのでその旨もちゃんとBugzillaに書いておきます。
126 :
120 :2012/03/15(木) 22:47:28.94
原因が分かりました。 4.8.0ではQHttpNetworkConnectionChannel::allDone内のエラー処理がコメントアウトされていました。 その影響で4.7.3では隠れていた不具合が表に出たようです。 恐らくですが、Connection: closeを指定していても、サーバがレスポンスの末尾に不要なデータを付け足して送ってくると、使い終わったソケットの終了処理が行われないようです。 そして次に同じホストに対してpostを実行すると、この使い終わったソケットを再接続せずに再利用してしまい、書き込みエラーが発生します。 該当部分のコメントによると既知の問題みたいですが、一応報告だけ。
Qt初心者です。プログラミングはそれなりに経験があります。 Layoutに対するwidgetのadd, removeでわからない点があるので、 もしよろしければアドバイスいただけないでしょうか。 === メーラーにあるような、分類分けルールを任意の数で追加するウィジェットを作っていて、 データ定義 Widget: 「LineEdit, 複数のボタン, addButton, deleteButton」の構成 というウィジェットを、QScrollArea にsetされる QWidget の VBOXLayoutに追加します。 このデータ定義ウィジェットのaddButtonを押すと、そのオブジェクトの下に新しいデータ定義Widgetを追加。 deleteを押すと、VBoxのwidget数が0でなければ、呼び出したデータ定義ウィジェットを remove という仕組みで動かしています。 ただ、QBoxLayout から removeWidget(w) したオブジェクトが見た目上で消えない場合があります。 (countを出力すると減っています) repaintイベントを呼び出しても表示上の問題は解決しません。 おそらく、 (1) メソッド呼び出しが deleteButtonClicked() Managerに自分自身を渡す (2) Manager の delete (dataDifWidget) で渡されたオブジェクトをremove (3) deleteButtonClicked() 関数に戻る という流れの(2)で処理が残っているのに remove することに問題があるのではないかと推測しています。 なにかよい対処法があったら、アドバイスいただけないでしょうか。 よろしくお願いします。
すいません、127 です。 baseWidget->remove(w); w->deleteLater(); としたら、解決しました。 オブジェクトの開放のタイミングとか検証してから質問するべきでした。 お騒がせしました。
startでスレッドが始まってデフォルトのrunが呼び出されて、 デフォルトのrunが呼び出されるとexecが呼び出されて、 execが呼び出されるとイベントループに入る だと思う
>>129 > クラスをthreadに割り当てて、start()では実際のスレッド動作は始まらず、
> クラスメンバー関数を呼び出した時点でスレッドとして動作が始まるって理解でいいの?
いや違う。
start() でスレッドの動作が始まり、イベントループが開始される。
スロットがシグナル経由で呼び出されると、スレッド側のコンテキストで
処理されるということ
スレッド間のスロットコールは内部ではイベントとして処理される
>>130-131 うーん、ちょっとデバッガで追っかけてみたけど(VC++環境)
start()ではSUSPENDでスレッド起動してるだけみたいだけど。
それに呼び出してもないのにexec()が勝手に動いちゃ駄目じゃない?
>>132 > それに呼び出してもないのにexec()が勝手に動いちゃ駄目じゃない?
なんで、exec() が動いちゃ駄目なの?
exec() が何をするものか分かってる?
ソース読まなくてもQThreadのリファレンスに書いてあったと思うけど
>>134 run()で完結する処理ならexec()必要ないし。必要のないものが勝手に動くと駄目だろ。
ざーと見てみたけど、signal受けるとQThreadのイベントハンドラが1回だけ呼び出されて
対応する処理に移動するって感じがするんだけど。
イベントループがずっと動いてるって確証は今のところ見当たらない。
念のため言っておくけど、
>>129 のmoveToThreadやinvokeMethod使った処理な。
なんで公式のリファレンスを読まないの? 分からないことがあったら一番最初にすることでしょ?
リファレンス読めなくてもソースなら読めるだろ
ソース嫁ソース嫁ってしつこくてうざいよ リファレンス読まずにソース読むなんて、仕事がなくて暇なヤツのすること
やれやれ ここもそろそろIDが必要になったか
リファレンス読んでもわからないからソース読みます
自演乙。やっぱり最低でもID出なきゃダメだね。
Qtはちゃんと資本が入ってるお陰で、ちゃんとしたドキュメントが整備されてるし よくあるオプソライブラリみたくソースから入る必要もないだろ
リファレンス読んでも分からないときにソース読むのは正しい リファレンス読めば分かるのにソース読むのはマヌケ
馬鹿には無理
ソースソスソスソーソーソース ソスーソソススソスソーソース
>>136 >run()で完結する処理ならexec()必要ないし。必要のないものが勝手に動くと駄目だろ。
その通りだと思う。シグナルとスロットを使わずにスレッドを使いたいだけならば、exec()
は不要でしょう。
>ざーと見てみたけど、signal受けるとQThreadのイベントハンドラが1回だけ呼び出されて
>対応する処理に移動するって感じがするんだけど。
>イベントループがずっと動いてるって確証は今のところ見当たらない。
run()でexec()を呼ぶとイベントループがずっと動いて、スレッド間でシグナルとスロットを
使うと、シグナルを送信するとイベントループに投げ込まれ、イベントループ経由でスロット
が呼び出されるという仕組み。
>>139 >
http://labs.qt.nokia.com/2010/06/17/youre-doing-it-wrong/ これを読んで、QThreadをstart()して、QObjectをmoveToThread()するのが正しく、
QThreadをサブクラス化するのがダメとみなしてはいけないと思います。
いやちょっと待ってほしい
サブクラス化自体がダメなんて話
>>149 以外誰もしてないんだけど
>>150 どちらも正しいです。moveToThread()の方がよいという訳ではないでしょう。
>>152 > どちらも正しいです。moveToThread()の方がよいという訳ではないでしょう。
ごめん、何と比べてるの?
moveToThread() しない方法って、QThread をサブクラス化して、
run() を再実装する方法のことを言ってるの?
それだと、QThread のサブクラスのスロットをコールしても
別スレッドのコンテキストで実行されないという問題があるぞ
>>153 いつでもシグナルとスロットを使わなければならない訳ではないから、
QThreadをサブクラス化してもしなくてもどちらも正しい方法です。
>136
>run()で完結する処理ならexec()必要ないし。
このような場合には、問題になりませんし、それで済む場合も多いのです。
そもそも、QThreadのrun()は元々実装しなければならなものであり、
スレッドを分かっていれば、サブクラスかをして使いこなせていたのです。
偉い人の記事を読んで、moveToThread()がよいと妄信するのは、技術力がないからです。
155 :
137 :2012/03/19(月) 20:18:01.57
一応言っておくけど137以降は書いてないからな。
>>149 明示的にrun()もexec()も呼び出してないのに内部でexec()が動いてるってこと?
なんか前半と矛盾するんだけど。
invokeMethodでの呼び出しが別スレッドのコンテキストでの実行になるんだから、
exec()がずっと動いてる必要もないだろう。invokeMethodから1度だけ呼ばれれば
いいんじゃないの。
156 :
137 :2012/03/19(月) 20:20:27.32
ざーと見たところ、invokeMethodはかなりメタ処理やってるので 遅そうだな。使い道は微妙かもしれない。
Qtアプリはシグナルスロットを基盤として設計されるものであり、 スレッドが関わってもその方針が維持できるようになったのは大きな進歩だ 昔はサブクラス化が必須であったが、この進歩のおかげで今となってはサブクラス化は例外的なものであり、 決して"間違い"ではないものの、推奨されたものではない QThreadのrunがexecを呼び出すようになったのは、ただのお節介ではない 使い方を理解していればどちらでもよいなんて、Qtが他と比べて優れている点を理解していない証拠だ 人の技術力をとやかく言う前に、自分の技術力と読解力を疑った方がよい
そろそろmoc使わないでもいいようになってくれ
>>155 お前は結局何が言いたいの?
リファレンス読んでもまだ仕様が分からないのか、それともQtの仕様は糞だって言いたいの?
お前といい
>>149 といい、もうぼくのかんがえたさいきょうのらいぶらりでも作ってろよ
160 :
137 :2012/03/19(月) 22:08:58.17
>>159 え?何を言ってるのかわからない。
俺は単にmoveToThread()ってどういう挙動?って聞いてただけ。
シグナル受けるかinvokeMethod経由で呼ばれたタイミングで初めて
スレッドが動き出すのかと推測してたんだけど、exec()の話が出てきて
よく分からなくなったんだわ。
いやお前今の今までそんな質問一度もしてないから スレッドが始まるタイミングとイベントループの話だけじゃん 一度自分が何を理解していないのか考えをまとめた方がいいぞ
横レスすみません
class Thread : public QThread
{
protected:
void run() {
QNetworkAccessManager manager;
reply = manager.get(QNetwotkRequest(QUrl("
http://hoge/fuga.html ")));
connect(reply, SIGNAl(finished()), this, SLOT(someSlot()));
exec();
}
protected slots:
void someSlot();
private:
QNetworkreply *reply;
}
void func()
{
・・・
Thread x;
x.start();
}
このとき、Thread::run()のイベントループ中に呼ばれたsomeSlot()は、
Thread::run()と同じスレッドで実行されると思っていたのですが、違うのでしょうか
関数内でQThread::currentThreadId()を呼び出してスレッドID表示してみればどのスレッドでその関数が実行されてるかわかるよ
>>162 せめて、コンパイルエラーが発生しないコードを示せよ。
すぐに検証できることを人に聞くだけで、自分ではいっさい検証してないってことか?
入門Qt4プログラミングのサンプルコードが、QThreadをサブクラス化して処理を追加するようになってるのが良くないね あれで誤解している人も結構いそう
166 :
124 :2012/03/20(火) 22:26:29.08
需要は無さそうですが、解決したので念のため。 今のXcodeではメニューのXcodeからPreferencesからDownloadsで Command Line Tools for Xcode ってのをインストールする必要がありました。
QTextCodec::toUnicodeとQTextDecoder::toUnicode(ConversionFlags設定なし)の違いって何なんでしょうか? 実行中同じオブジェクトが同じコーデックで何度もデコードするんですが、こういう場合どちらを利用するのがベターなんでしょうか?
>>165 そう言えば、でるでると言ってなかなかでない「でるでる詐欺」のQt翻訳本はどうなったのかな?
Qt5って夏ごろだっけか てかもう春だしな
171 :
デフォルトの名無しさん :2012/03/22(木) 14:51:40.23
172 :
デフォルトの名無しさん :2012/03/22(木) 16:00:10.30
174 :
デフォルトの名無しさん :2012/03/22(木) 19:30:07.08
>>173 ありがとうございます。無事いけました。
そして時は動き出す
−−−−−−−−−−−−−−−−終了−−−−−−−−−−−−−−−−
QMLなんかより本体の方をまともにしてくれ
最近Qt始めたんだけど、そんなにバギーなん?
別にバギーじゃないお
問題が多いだけ
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 を別スレッドにするという対処はできそうにありません。
http://qt-project.org/forums/viewthread/4002 そのため、完全に手詰まり状態となってしまいました。
もしよかったら freeze を防ぐための アドバイスいただけないでしょうか。
一定量溜まったら、ってどのくらい? KB単位なのかMB単位なのか あまりでかいのなら見えてるところだけappendして遅延ロードさせるとか
>>183 Line base なので 10000行ごとにロードしています。
appendの処理が重いため、この量が少ないと処理時間が伸びました。
遅延ロードも検討したのですが、私のプログラミングスキルだと、
利便性と兼ね合いを持たせて実装する仕組みを思いつきませんでした。
他のエディタのアルゴリズムとか調べてみると発見があるかもしれないですね。
アドバイスありがとうございます。
Qt Creatorってemacsのキーバインドないの?
少なくともデフォルトではないんでなかったか キーボードの挙動は結構自分で変えられるから試してみてはいかがか
Qt CreatorとかQt Assistantのアイコンがそっくりすぎる もう少しぱっと見てわかるようにならないかな
馬鹿には無理
190 :
営利利用に関するLR審議中@詳細は自治スレへ :2012/03/29(木) 23:37:45.82
今Twitterのクライアント作っててGUIにQt4を使っています。 TLを表示する時、Twitter側からつぶやきの情報を取得して QLavel作成して描画しようと思っているんですが、 ツイートの文字数、ウィンドウの大きさによってラベルの高さを変えたいです。 リファレンスがわかりにくくてよく分からなかったんですが setGeometry関数は横の長さだけ指定して 縦を自動調整してくれるようにできるんでしょうか。 できないなら方法ないでしょうか。 丸投げな質問ですいません。
heightForWidthとか
192 :
営利利用に関するLR審議中@詳細は自治スレへ :2012/03/30(金) 00:34:47.49
>>191 今調べられる環境では無いですが
多分引数intで縦の長さ決定する関数ですね。
その逆って無いですか?
QTableViewとは違うエリアで変化したデータの変更を、すぐにQTableViewの描画に 反映することってできますか? 今、設定された値によってテーブルの背景色を変化させるようにしていますが、 違うウィンドウで値を変えても、すぐに描画が反映されず、 QTableViewが貼りつけてあるウィンドウに行って、クリックとか何かイベントを 起こさせないと反映されません。 わざわざそのウィンドウに行かずに、すぐに反映されるようにするにはどうしたらいいんでしょうか?
>>193 QTabView を update() してる?
Qtはいつまで32bitしか配らないのか? 自前でビルドするとエラー出るし
ん?Linuxはx86-64版を配布しておるが。Windowsの話か?
Mac版も64bitだな
Win版も非公式ビルドなら、4.8.0のx64がGoogle Codeにある
重たい処理をしてる最中の描画がうまく働かず、GUIの一部がうまくアップデートされない状態に時々ならないですか? その箇所をアップデートするようなイベント(クリックとか、マウスオーバーとか)で元に戻るんですが、 放置しておくと永遠に見えないままです。 定期的(1000ms間隔ぐらい?) な MainWindow のリフレッシュとかが必要なんですかね。。。 Macだとこの問題は発生しないのですが、Windowsだと起きます。
>>200 > 重たい処理をしてる最中の描画がうまく働かず、GUIの一部がうまくアップデートされない状態に時々ならないですか?
イベントハンドラで重たい処理をしてれば、イベントループが回らないので
GUIがうまく更新されないのはしょうがないんじゃないかい?
重い処理は別スレッドで処理しないと駄目なんじゃないかな
よく分からんのですが、qtのオープンソース版ってひとつしか頒布されてなくて、
(自分がインストールしたのはこれです → Qt by Nokia v4.8.0 (MinGW OpenSource) )
>>2 のLGPLライセンスだと思って使ってもいいってことですか?
つまり、LGPLライセンス用とGPLライセンス用の2種が存在するわけではないですか?
GPL、LGPU好きな方で使える
あ、即レスありがとうございます
205 :
営利利用に関するLR審議中@詳細は自治スレへ :2012/04/01(日) 18:08:32.63
初歩的だと思いのですが、質問させてください QtCreatorを使っており、ui_mainwindowを読み込んだ MainWindowクラスがあります。 uiではMainWindowウィジェットの子ウィジェットとしてQTabWidgetクラスのtabsウィジェットが 設定されています。 このtabウィジェットに対して色々な処理を加えたい (コンテキストメニューでタブを追加したり消したりするような処理など) 時に、この処理をMainWindowクラスに書くのは何かちがうのかなと思ったのですが、 別個にTabsクラスを作って、それにtabsを渡して色々処理するようにしようと思ったのですが セオリー的にはどうなっているのでしょうか 教えていただけますと嬉しいです
Tabsクラスにtabsを渡すって何?
>>205 コンテキストメニューでタブを追加するという処理なら、
・コンテキストメニューを作ってQActionをアサインする
・QAction::triggered()シグナルをMainWindowクラスで受け取る
・追加するtabをQWidgetで作成(もしくはあらかじめ作る)
・ui->tabs->addTab()で追加する
で鉄板だと思うのだが、好きにやってみたらいいんじゃね?
>>201 GUI に依存する重たい処理なんで、別スレッドに対比できないんですよね。
QWidgetの派生クラスの「1行の関数呼び出し」がえらい負荷をかけているらしく、
要素の分解もできない状態です。
具体的には、以前相談させていただいた
QPlainTextWidget の String の追加処理(insertPlainText)を、高速化できないので、
(1) テキストを追加
(2) 重くなる
(3) GUI がアップデートされない
(4) TextEdit 以外の 他のGUIイベントが発生しても、それが反映されない
(5) タッチされるまで見えないまま
という状態になっています。
QMainWindowの派生クラスで Thread を持ち、それが
while(true){ msleep(1000); emit windowUpdateSignal; }
という形で、アップデートをかけ続けるという動きを考えたのですが、
あまりイケてなさそうな気がして。。。
エスパーじゃないんでよくわからんが、QStringの扱い方がまずいんでないの? コピーしまくってたりとか、変なループ回して同じ処理を何度も繰り返したりとか。 メッセージが回らなくなるレベルの重さなんて、今時の環境だったらよっぽど無駄なことしないと難しいよ。
ループの中に QApplication::processEvents() を入れるとか、そういう話じゃない?
>>209 QStringの扱いがまずいというのはあるかもですね。
本来、QPlainTextEditは大量の文書を入れる用途には向いていないようなのに、
数十万行程度読みこませることがあるので。。。
あと、signal の送受信の際に、内部的にQStringを何度もコピーしている可能性も
考えたほうがいいかもしれないです。。。
>>210 それも以前試したのですが、目に見えた改善はなかったです。
ううむ。
>>211 > 本来、QPlainTextEditは大量の文書を入れる用途には向いていないようなのに、
> 数十万行程度読みこませることがあるので。。。
それが問題だと思う。
巨大文書用のエディタクラスを作るしかないかも。
#仕事として発注してくれれば受けるけど、そこまでコストかける気はなさそうだね
>>211 >あと、signal の送受信の際に、内部的にQStringを何度もコピーしている可能性も
>考えたほうがいいかもしれないです。。。
QStringはコビーオンライトするようになっているので、ポインタサイズしかコピーしていません。
>>205 QtCreatorで配置したオブジェクトに任意の処理を加えたいって
ことならオレはこうしてる。
これならQMainWindowクラスに記述するコードは必要最低限に
なるかな。
void MainWindow::on_actionOpen_triggered()
{
MyArea *localarea = centralWidget()->findChild<MyArea *>();
if (localarea!=0) {
localarea->on_actionOpen_triggered();
}
}
ながれをぶったぎってすみませんが、 Qt4.8.0以降でOpenGLを使う場合、glutをincludeしなくなっているので gluLookAt()が使えません。そうすると、自前で視点変換の行列を 用意しなければならないのですか。それとも代わりの関数がどこかの クラスに用意されているのでしょうか。
>>217 なるほど。たしかにglu.hでうごくみたいですね。
<QtOpenGL/QGLWidget>のなかでgl.hしか読み込んでいなかったので
そうしようと思いませんでした。
リンクによると、Qtではglutを使わない方針になっているんですね。
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 した時の挙動も若干違いましたが。
>>213 ググったら似たようなトラブルが山のように出てきたので、
おそらくそうですね。
プロっぽい人の回答だと、
1) オンラインのログのようなものなら、組み込み機能の行数制限を使って、古い行を上から自動で消す
2) ページングに細かくぶったぎる
というのがよく見られるパターンでした。
私も趣味で開発(タダ)してるんで、金はかけられないですw
巨大文書用のエディタクラスですか。。。
作るならQPlainTextEditと上位クラスのコード読まないと無理そうですね。
>> 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では、簡単に言うと何がいいのでしょう?
>>199 これつかわないと64ビット版のwindows向けにビルドできないのでしょうか???
>>227 WOW64でいいなら使わなくてもよいでしょう
組み込みでもOpenGL使えるのかな
>>229 Qt 4ではドライバがあっても問題が多過ぎて満足に使えませんでした。
問題を報告したら、今のアーキテクチャではもう無理なので、Lighthouse迄待ってくれと言われました。
Qt 4.8のLighthouseのOpenGLドライバは、問題がまだあるけれどそこそこ動きます。
みなさんって Qt4 を Windows か Mac、Linux もしくは 複数のどれで利用しています? アプリケーションの大枠としてはだいたい同じ挙動になりますが、OSごとに若干GUI系のレスポンスが違いませんか。。。 Windowsだけ、このWidget_Aが遅くてアップデートがうまく動かないとか、 Macだけ、このWidget_Bが遅くて、もっさりしているとか。 Windowsだけ、QLineEdit(コピペしたときの見た目が更新されない), と QTreeWidget(1クリックでフォーカスが表示されない) のアップデートが遅く、 Mac だけ QTreeWidget の plasticStyle がもっさり(カクカク)しています。 解消したいんですが、OS特有なんで原因がよくわからないんですよね。。。
>>232 ここ数年こういったQtの実装の不十分さが目立って来ています。
報告しても、古いからもう改善しないとクローズされるのが何度もあって、言う気も失せています。
そのへんはしかたないと思うけどね。 Javaとかと違ってネイティブで動くことに意味があるんだし。
235 :
営利利用に関するLR審議中@詳細は自治スレへ :2012/04/08(日) 00:55:01.74
QMLの不具合は報告するとすぐさま修正されるよ QWidgetは放置されるけど
馬鹿には無理
オプソは総じて、過去の遺産のメンテみたいな面白くもないことはしたがらないからな 自分で直すか有償サポート申し込めってことだな
オープンソースといってもNokia関係者が8割だそうだ。
239 :
営利利用に関するLR審議中@詳細は自治スレへ :2012/04/09(月) 12:59:20.02
NokiaはQMLで何がしたいんだろう?
Qtで作ったMeeGoを捨てて、Windows Phoneに寝返ったNokiaに、 もう一度Qtの開発者達へ目を向けさして、Nokiaのメインストリームにして欲しいんじゃないかな。
Qtの GUI 系のアップデートって、メソッドの呼び出し順序で挙動が変わりますね。 QPlainTextEdit を拡張して、左側にラインナンバーを表示させているのですが、 再定義を以下のようにすると paintEvent(QPaintEvent *e){ lineNumberArea->repaint(); <--- (1) QPlainTextEdit::paintEvent(e); <--- (2) } Editer本体の描画がうまく動かなかったのですが、 この(1)(2)を逆にしたら問題なく動くようになりました。 重要なイベントを先に動かしたほうがいいみたいですね。
単に理解できてないだけなんじゃね
それは単純に、(2)が上書きしているからじゃないの? Widget が透ける設定じゃなけりゃ、塗りつぶすでしょ。
>>243 PlainTextEditの描画を少し右寄せして、空いた隙間にライン描画のための QWidget を配置しています。
両者は重なっていないので、塗りつぶしは発生しないです。
ペイントイベントが半動きのようになっていて、以下のような症状がでていました。
- スライダーを動かすと、上下 20 % が空白になる
- 停止すると Editer が真っ白
- クリックすると、描画され文字が確認できる
- カーソルを動かすと、現カーソル行だけが空白
- 左側 30%ほどしか描画されない
上記は全て同時に発生するのではなく、このうちのいくつかが複合的に起きていました。
Win/Macともに問題なかったコードを、Macでコードをリファクタリングしたあとに、
Windowsで動かすと急に上記のような症状が現れて焦りました。
きちんと両方で検証しながらコードの修正変更を加えないと危ういですね。。。
>>244 >PlainTextEditの描画を少し右寄せして
どのようにして右寄せにしていますか。
なんでupdateじゃなくてrepaintなの?
あと
http://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.
は関係あるのだろうか
>>245 setViewportMargins(x, 0, 0, 0);
ですね。
>>246 QPlainTextEdit の 継承クラスの中に QWidget(ライン番号表示)を持っていたのですが、
両者のアップデートのタイミングが異なっており、「行番号がアップデートされずに、
実際の行と食い違いがある」という状態になっていました。
なので、継承クラスで PaintEvent をオーバーライドし、
「本来のPaintEvent + 同時にアップデートされなかったWidgetのアップデート」
を行うようにしています。
伝え忘れましたが、行番号はSQroll範囲全てにあるわけではなく、 現在見ている Window範囲にしか存在せず、必要に応じて行番号を アップデートする仕組みで動作しています。
>>246 どっかのドキュメントで 「update ではなく、repaint を呼び出すべき」というのを見かけ、
それを盲目的に信じていました。
申し訳ないですが、一ヶ月近く前の話なので覚えていないです。ごめんなさい。
lineNumberArea実装の例はQtのサンプルに含まれてるよ 俺はそれ参考にして実装してる
>>244 >塗りつぶしは発生しないです
どうやって確認したの?
>>250 ,252
私もこれを参考にしました。
LineNumberAreaの行番号表示のアルゴリズム と、QPlainText の共存方法自体はほぼ同じです。
ただ、描画イベントの処理系はサンプルのままだとうまく動かなかったので、変更を加えています。
あと、他機能との実装の兼ね合いもあるので。。。
>>251 エリアがかぶっていないからです。
<--LineNumberArea->
<----(blank)--------------|----QPlainTextArea-------------->
というような感じですね。
結局、Qtのせいではなくて理解が足りなかったということでおk?
>>254 私はエキスパートはおろか、本業プログラマですらないので、
Qtの問題性を疑うより私の理解不足を疑うほうが妥当だと判断します。
ただ、文脈を持たないその指摘に、なんの意味があるかがよく分かりません。
低レベルな質問でスレ汚しをするな、という指摘なら謝ります。
>>255 > 私はエキスパートはおろか、本業プログラマですらないので、
> Qtの問題性を疑うより私の理解不足を疑うほうが妥当だと判断します。
以下の文章は自分の理解不足を疑った方がいいと判断している人の
文章には思えないのだが
理解不足の人が知ったかぶって不完全な知識をひけらかしているように読めた
> Qtの GUI 系のアップデートって、メソッドの呼び出し順序で挙動が変わりますね。
> QPlainTextEdit を拡張して、左側にラインナンバーを表示させているのですが、
===中略===
> 重要なイベントを先に動かしたほうがいいみたいですね。
煽るより正しい情報を書き込めよ
実践 Qt 4プログラミング
http://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 カスタムテーブルモデルの作成
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 複数行リッチテキスト編集
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 アニメーションと状態マシンの結合 終わりに 精選参考文献 索引 オライリーの新刊は内容的に入門書ではないね。 マルチメディア系てんこもりで期待大。
エディタの所のカスタムテキストエディタは、1行エディタとかやってるとこからして IME周りからやってくれるのかな?だとしたらほしいなあ。よくわかんないし
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 :2012/04/12(木) 08:38:46.24
すみません訂正です。 誤:/Application/Xcode.app 正:/Applications/Xcode.app
>>266 > 頑張ってこのスレ読み返せば解決する
情報ありがとうございます。xcode で検索して
>>166 を発見しました。
>>166 > 需要は無さそうですが、解決したので念のため。
いえいえ、需要大有りです。大変助かりました。
ありがとうございます。
今、Qt SDK 1.2.1 をインストール中です。C++ が無いというエラーダイアログ
は出なくなりました。
268 :
デフォルトの名無しさん :2012/04/12(木) 13:58:42.21
Mac で QTextEdit に(フォントはデフォルトのまま)日本語の文字を入れると、 行が下に少しずれるのですが、これはそういうものなのでしょうか? ずれないように対処する方法がありましたら、ご教授ください。 よろしくお願いします。
Threadの継承クラス以外で sleep 関数に類似する関数は使えないのでしょうか。 QMainWindow を close する際に、child thread (無限ループ)を終了させたいです。 closeEvent を継承して、その中で以下のような形で実装するつもりだったんですが、 QThread::sleep() は protected だとコンパイラに怒られてしまいました。 アドバイスいただけないでしょうか。 thread->terminate(); while(true){ sleep(100); if(thread->isFinished()) break; } QTest に sleep があったのですが、これはとりあえず保留しています。
sleep の問題の解決になっていないのですが、threadの終了を待つには thread->terminate(); while(!thread->isFinished(){ QCoreApplication::processEvents(); } で十分でした。 マシンによると思うのですが、うちのやつだと100回以内にループを 抜けていたので sleep するレベルではありませんでした。
wait()だろ普通
>>271 wait() って、そのインスタンスに走らせたスレッド(runが動いているやつ)を止めるのではなく、
呼び出し元のを止めるんですね。。。
wait()を使うことにします。
ありがとうございました。
wait()はメインスレッド止まるけど、while使うとQCoreApplication::processEvents()呼ぶから画面がぬるぬる動くんじゃね
>>270 QTimer::singleShot()で呼び出されるスロットで、スレッドの終了判定をするというのはどうでしょうか。
スレッドが終了していなければ、singleShot()を再度呼び出す。
ビジーループにならず、wait()でメインスレッドが固まるのも避けられます。
>>269 >Threadの継承クラス以外で sleep 関数に類似する関数は使えないのでしょうか。
QTest::qSleep()は別として、メインスレッドでsleep関数に類似するものを使うとGUIが固まるので、
敢えて用意していません。
QTimerだとかで小細工しなくても、こんなんで十分じゃね? while(!thread->wait(300)) { qApp->processEvents(); }
270です。
>>273 確かにそうですね。挙動として問題がないので、結局この実装のままにしています。
>>274 closeEvent 内部で終了を待ちたかったので、今回の処理はそれは利用しませんでした。
その方式が一番 GUI に負担が少なくていいですよね。
>>275 sleep に関わらず main thread で時間がかかる処理はやらせないほうが無難みたいですね。。
入門書にあった基本中の基本ですが、頭から抜けていましたw
>>276 wait()のみと、while 方式の両方のいいとこをとったような実装ですね。
while内の判定がスマートw
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を取得できますでしょうか。
countとかすると、0じゃない値が帰ってくる? ワンラインで取ろうとせず、どの行程でコケてるか調べてみたら。 しばらく使ってないから忘れたけど menubar -> menu -> action って親子関係じゃなかったっけ?
あ、ごめん。menubar じゃなくて toolbar か。
ui->button1とかでアクセスできるだろ
馬鹿には無理
284 :
デフォルトの名無しさん :2012/04/14(土) 11:42:54.59
AccessとQtは同じくらい面白い。
285 :
279 :2012/04/14(土) 12:36:13.14
レスありがとうございます。 uiを色んなモジュールで引き回しまくるのが嫌なので、できればtoolBarから取得したいのですが、なんとかならないものでしょうか。 QTでは普通、どのモジュールからもuiオブジェクトから個々の部品オブジェクトにアクセスするものなんでしょうか
他のMacで動くか試していないですが、以下のコマンドを使うと Mac で アプリをデプロイできそうです。 # which macdeployqt /usr/bin/macdeployqt # cd /usr/bin/ # ./macdeployqt /PASS_TO_APP/myapp.app ※ myapp.app は Qt Creator で作ったアプリ これをやると、myapp.app が 1M ぐらいから 35M ぐらいに膨らんで、 パッケージの中にライブラリが色々と入っていたました。
>>285 その部分だけ ui じゃなくて、コードを使って GUI を作ったら?
そしたら、toolBar から簡単に子供を取れるんじゃないかな。
じゃあ、toolbar->actions()から自分で検索すれば?
ちなみに、286 の方法なのですが、snow leopard でコンパイルしたものは、 qt4 をインストールしていない lion で動きました。 10.5 はよくわからんです。
QT Creatorには新しいファイルの追加でC++ソース、ヘッダの追加は可能ですが 新しいフォルダの追加というのが見つかりません。 ソースファイルを下位フォルダを作成し仕分けする、というようなことは できないのでしょうか
できますよ
>>291 そんなもの下位フォルダ作ってソースをそこに置いて.pro書き換えればいいだけ。
何でもRADツールの機能に頼らないで、.proを手で編集することくらい覚えないと
使いこなせないよ。
つーか.proを直接編集する方が早いし、自由も利く。コメントも書けるし。
よく解らなくて、すいませんありがとうございました。
291です。
>>292 >>293 レスありがとうございます。
今までは既存ファイルの追加で新しいファイルを追加していたので
新しいフォルダの作成は気に留めていませんでした。
.proの編集はライブラリ追加等で触っているので出来なくは無いのですが、
可能であればGUIから追加したいと思っていたのですが・・・。
新しいファイルの追加で出てくるダイアログで右クリックしたらディレクトリくらい作れるだろ
Qtで作成したアプリケーションってデバッガ上じゃなきゃ動作しないのに なんで人気なの?
>>297 ha? Google EarthやPhotoshop Elementsがデバッガー上で動いてたか?
>>297 んなわけないだろ?
QtのbinディレクトリにPATH通してないんじゃないのか?
>>295 ヤレヤレ。
やたらにソース嫁ってのもどうかと思うが、こういうのはやっぱりゆとりなのか?
>>293 ようやく理解できました。
フォルダがツリーに表示されている時はそこから追加、
フォルダが表示されるのはフォルダが必要になった時、なのですね。
先にフォルダだけ作ってからそこから新規作成するのだと思ってました。
>>300 申し訳ないです。出来れば煽りだけではなくソースの提示をお願いします。
馬鹿には無理
286です。 このコマンドを利用したあとで、何度かコンパイルをしていたら QWidget: Must construct a QApplication before a QPaintDevice というエラーが出るようになりました。 コード的に問題はなく、きちんと new しているWidget にたいして GUI イベントを呼ぶタイミングでエラー起こっており、 ぐぐったら、どうやら - release と debug のコードが混ざっている - 実行ファイルとライブラリのバージョンが違う などの原因があるようです。 特定のコンポーネント(渡しの場合はQProgressDialog)でのみ発生する可能性があるので、 気をつけたほうがよさそうでした。
macは糞
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
なんで素人ってエラーメッセージ読まないんだろうな
エラーメッセージからは 「QPaintDevice を 使う前に QApplication を作れ」 とだけしか読み取れないのですが。。。 問題が発生するアプリケーションを破棄し、リビルド -> デプロイ用にコマンド呼び出し としたら直りました。
既に Deploy したものを Qt Creator が上書きするのがよくないかもしれないですね。 毎回デスクトップにコピーしてから、それを Deploy 用にすることにします。
311 :
285 :2012/04/14(土) 22:17:28.95
レスありがとうございます >>その部分だけコードで そうすれば多分解決すると思うのですが、デザイナでポトペタでやると うまくいかないというのが釈然とせず・・ デザイナで置いたアクションをうまくコード側で取得するすべはないものかと。。 >>actions() こんなメソッドあるんですね。 ただ複数actionあった場合は複数返ってきて、 それぞれ別の処理を加えたい時に面倒臭そうですね toolBar->serachAction('playButton'); みたいなことが出来ればいいのですが、 こういうメソッドはないのでしょうか?探しても見つからないです。 あまり需要がないということでしょうか。 コードでActionを生成しましょうということなのですかね・・
ないときはつくれよ
>>311 自分でsearchActionとやらを作れ
余裕だろ
>>311 デザイナで作ると、アプリが複雑になるにつれて、機能を作り込むのがキツくなりませんか?
コードでGUIも作ると、「この Widget 周りの処理が複雑になってきたなぁ」 -> 「継承 Widget に仕事を集約するか」
という流れが簡単にできると個人的には思っています。
315 :
デフォルトの名無しさん :2012/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で調整してみたり自分が思いつく限りのことはやってみましたがだめでした。(かなり的はずれなことをしているかもしれません) どうすればいいかわかる方がいらっしゃればお教えください。
それでいいよ
317 :
デフォルトの名無しさん :2012/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を再びセットしなおそうとしたら今度は別のところがうまく行かなくて...と言う感じでこの方法は断念しました。
それでいいよ
>>317 qtに限った話じゃないが、一気に作ろうとせず、ちょっとずつ挙動を
確認しながら作ってみたら?
どっかでイベントが呼び出されていないとか、間違った変数を使っているとかさ。
あと、見た目じゃなく qDebug() などでwidetの構成を出力してみたりとか。
本当は追加されているのだけど、paintイベントが走らず見えていないだけかもよ。
まずは問題箇所を切り分けないと。
馬鹿には無理
322 :
デフォルトの名無しさん :2012/04/15(日) 13:58:48.98
他の部分のウィジェットにアクセスしたくなる度に渡す引数増やすのが大変そうなので 結局ui引き回しで実装することにしました。 アドバイスくださった方々ありがとうございました!
323 :
デフォルトの名無しさん :2012/04/15(日) 14:45:22.27
>>319 >まずは問題箇所を切り分けないと
おっしゃる通りです。しかしそうしようにもまだ何がどう動いているのかもわかっていない(したがって何が問題の原因となり得るのか適切に判断できない)状態なので、ちゃんと本などで勉強します。
>>320 できました!!ありがとうございます。
buttonPanelのlayoutをTestWidgetに持たせて追加・削除を行う方法は、試してみたといいったもののあまり真面目にやっていませんでした(その頃には疲れ果てていて...)。
ボタンの削除をしたときにウィンドウのサイズが縮小しませんでしたが、setButtonsが呼び出される度にself.resize()で大きさを直したやったらまだ少し挙動不審ではあるもののいけそうなので頑張ってみます。
ありがとうございました。
324 :
デフォルトの名無しさん :2012/04/15(日) 14:52:53.68
QSignalMapperでスロットに2つ引数を渡したいのですが どう書けばよいでしょうか??
326 :
デフォルトの名無しさん :2012/04/16(月) 21:30:16.10
せやから、AccessとQtは同じくらいおもしろい言うとるヤンか!
なんのはなしやねん
Qt 4.8.1のビルドに挑戦してます。 Windows7 64bit + VC2010Pro 64bit + ActivePerl 5.14.2 (32bit)の 環境です。しかし、ビルドがエラーで終了してしまいます。 configの指定次第でビルドが成功するのでしょうか。 ちなみに別のマシンのMingw32でも4.8.1のビルドは失敗してしまいます。
エラーメッセージ貼れ
エラーメッセージに原因が書かれてる そこを直せばコンパイルできる
文字コードについて質問です ウェブからとってきたデータが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 :
デフォルトの名無しさん :2012/04/18(水) 02:49:49.82
QString str = enc->toUnicode(char* EUC-JPの文字列) でいけたはず
qt5 alphaをVS2010でビルドするとqtsvgでエラーでるんだが、誰かビルド成功したひといる?configureかperl buildが悪さしてるっぽいんだけど。 因みにqtbaseはビルドできて実行もできる。 しかも最新ソースをgitクローンしようとしたら途中で失敗する。
>>333 問題なくビルドできたのはLinuxだけでした。
335 :
333 :2012/04/20(金) 22:14:44.58
>>334 その後、qtsvgでエラーの原因分かりました。
単純にconfigure時のsyncqtスクリプトで環境変数QTDIRを参照していて、
旧バージョンのパスC:\Qt4.x.xを参照していたのが原因でした。
でも今度はQtWebkitでicu何チャラがないみたいなエラーがでてしまった…。
遅くなり申し訳ありません
>>332 どうも、
QTextCodec* euc=QTextCodec::codecForName("EUC-JP");
自体が失敗しているようです。
QTextCodec* euc=QTextCodec::codecForName("EUC-JP");
euc : <unavailable synchrounous data>
となっています。
対応していないのかな・・・
EUCはオワコン
プラグインが追加されていなかったみたいです。 とりあえずヘッダーに #include<QPlugin> Q_IMPORT_PLUGIN(qjpcodecs) として、.proファイルに QTPLUGIN += qjpcodecs としたけど、それでも通らない。 cannot find lqjpcodecsd のエラーが出される・・・
339 :
デフォルトの名無しさん :2012/04/23(月) 05:00:04.36
paintEvent以外でwidgetに描画出来ないのが不便すぎる Qt以外だと出来たような気がするけどこんなもんなのか
>>339 その代わりにフリッカを防ぐという利点がある。
341 :
デフォルトの名無しさん :2012/04/23(月) 05:36:20.53
それって利点なの? フリッカを防ぎたいときは単にpaintEventで描画すればいいだけで paintEvent以外での描画を禁止する意味あるの?
>>341 >フリッカを防ぎたいときは単にpaintEventで描画すればいいだけで
それだけでは、ウィンドウ全体でのフリッカは防げない。
343 :
デフォルトの名無しさん :2012/04/23(月) 07:32:23.88
PAINTイベント以外で描画しても フリッカで困ったこと一度もないけどな
344 :
デフォルトの名無しさん :2012/04/23(月) 09:42:22.70
>>339 できますよ
ちなみにフリッカとは関係ない
paintEventで描画してもへたくそだとフリッカでる
>>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.
>345 VS2010はSP1かい? もしアップデートしてないなら試してみてはどうかな
>>346 そういえば、EXPRESS版からProにしたときにちゃんとSP1あてなおしたか
あやしくなってきました。後日、環境整えて再チャレンジします。
>>343 >PAINTイベント以外で描画しても
>フリッカで困ったこと一度もないけどな
嘘をつくな、できる訳がない。
>>344 >できますよ
こちらも嘘をつくな、できないよ。
>>344 >ちなみにフリッカとは関係ない
ウィンドウレベルでというのを理解してないな。
恥の上塗りですね わかります
NOKIAがジャンク級になっちまったい。 いずれサムスンが買収かな? サムスンQt... いやな響きだ。
オープンソースなんだからフォークすりゃいいじゃん
だれか・・・プラグインの追加方法を教えてください
>>338 の方法では無理でした
細かく見てないけど Qt4.8.1 VS2010版だと何もしなくてもQTextCodecでEUC-JPからUnicodeになったよ
パスが通ってないか拡張ファイルが目的の場所に生成されてない
スタイルシートでUIの色変えるの、なんかめちゃくちゃ大変なんだけど。 どのパーツのどの状態とか、わけわからん。 Qt使ったアプリが流行ってるっていうけど、ほんとにこんなのみんな使ってるの?
>>356 Qtのスタイルシートは、失敗作で、使ってはならない機能です。
もう改善もバグの修正もされません。
スタイルシートは、駄作だけれど、他によいところは沢山ありますよ。
CDSCSS
359 :
デフォルトの名無しさん :2012/04/26(木) 08:00:20.64
でもスタイルシート使わないと出来ないこともあるんでね?
Qtは失敗作だらけじゃん それが証拠にQtが使われたプロジェクトなんて極々わずかw
だらけって...他は? > それが証拠にQtが使われたプロジェクトなんて極々わずかw 産業機器とかの世界とか、知らないだろ? 必死にネガキャンするのは、何でかねぇw
☆ 午後からはQt vs WPFをお送り致します。お楽しみに! ☆
Qtを使ってて、一番普及しているアプリは、KDEだよ。 Windows 使ってて、モバイルぐらいしか興味がない人には、どうでもいいことなんでしょうけど。 それならターゲットに合わせて、素直にC#とか、Objective-Cとかやればいいのに。 creator でたから、急激にWindows ユーザーが、このスレに増えたけど、正直何を期待して わざわざやるのか俺には理解できない。 やたら、もう終わりとか言ううざい人がいたりするけど、Linuxがどうでもいいのなら、Qtは最初から 終わってますよ。
>失敗作だらけ なのに >使われたプロジェクトなんて極々わずか ?
>> 359 カスタムスタイルかQProxyStyleがあれば十分、 スタイルシートはQProxyStyleと同じ考え方で作られている
>>363 > creator でたから、急激にWindows ユーザーが、このスレに増えたけど、正直何を期待して
> わざわざやるのか俺には理解できない。
俺(と言うかウチ)の場合は死に体のC++ Builderからの乗り換え。書きためた資産があるから、
簡単にC++から他の言語に移行できないし。
>>367 MFCなんか使う気がしない。
.NETだとC++/CLIになって、ANSI C++で書かれた資産が利用できない。
凄いなぁ。 BCBから乗り換えたかったけど、いろいろと違いすぎて30分で諦めた。
>>363 どう考えてもPhotoshopやGoogle Earth、Operaの方が普及してると思う
流石にOperaよりはKDEの方が
>>369 さすがに30分は早すぎるんじゃぁ...
乗り換えるんだからいろいろ違うのは覚悟の上。Qtはまだ違いが少ない方かも。
GTK+(のC++バインディング)やらwxWidgetsやらいろいろ試してみて、親しみ
やすさや開発環境の出来でQtになった。
でもBCBはC++だからまだいい方。Delphiの人はどうするんだろう...
エンバカデロ死に体なのか
>>373 一例を挙げると、一時は一日に10件や20件の書き込みがあったメーリングリストに
閑古鳥が鳴いて、数週間や酷いと数ヶ月に1件になった。完全に取り残されたと
思った。
他にもあるんだけど、無責任なことは書けないので控えとく。
そこへ持ってきて2009版で大きな仕様変更が行われたのに、ドキュメント(ヘルプ)が
嘘だらけの無茶苦茶でわけわからなかったのが乗換えを決断する決め手になった。
会社の名前が変わった時点で開発環境が捨てられ気味に見えたもんなぁ 今の有様を考えると当時の印象は間違ってなかったってことか 昔は開発環境としてMSとガチで殴り合ってた会社だったのにな
C++Builderは1から使ってたけど嫌になった最大の原因はヘルプの出来がひどすぎること バージョンアップよりヘルプまともにするほうがよほど重要なのに
>>375 Turbo C 対 Quick Cの時代が懐かしい...Turbo Cは本当に出来が良かった。
今思うとBCB3〜6位が最盛期だったかな。
>>376 > バージョンアップよりヘルプまともにするほうがよほど重要なのに
禿同。使われもしない新機能より、ドキュメントやツールの充実やバグ取りを
優先させて欲しかった。
Qtも新機能優先のところが見えるけど、BCBよりずっとマシ。
ドキュメントは英語だけど、遥かに充実してる。
時代のせいかもしれないけどQtはホント太っ腹に作られてる
Qt4.7.4Linux版を使用しています QPushButtonの色を変えるのにsetPaletteを利用していたのですが、 qtconfigのGUIスタイルがGTK+の時だけ色が変わりません GTK+の時でもスタイルシートなら変更できるんですが、setPaletteでなぜ変更できないんでしょうか? 以前は変更できていたのでデスクトップ環境の設定がおかしいのかもしれないのですが……上手く調べられません
>>379 スタイルによっては、パレットを部分的に参照していないものがあります。
qgtkstyle.cppを読んで、変える方法を考えてみてはどうでしょうか。
>>372 30分は大げさに言い過ぎたけど、
クイックレポートを多用してたから諦めた。
>>381 あぁ、なるほど。それは厳しいね。
誰かそういうもの作ってないかな...
クイックレポート って何?
Qtデザイナでフォームにボタンやテキストなどを貼り付けていく感じで、 紙状のフォームにテキストや線やデータベースなどを貼り付けて、 印字帳票をデザインするdelphiやBCBに昔付属してたツール
Delphiもオブジェクト指向言語でポインタもあるし、案外障害はないんじゃね 愛用のコンポーネントの代替がないとかいうのはどうしようもないが それよりも、プロパティの機能があっちに比べてだいぶショボいのがイラつくかも
Qtも逆境続くなぁ。 KDEと統合したりしないのかね?
自業自得
Javascriptが世界を支配する日 - DQNEO起業日記
http://dqn.sakusakutto.jp/2012/04/javascript_14.html もう氏ねよこいつら。最近のウェブ屋ども頭おかしいわマジで。
JavaScriptのVMは何の言語で書かれてるの?
てめえの使ってるブラウザは何の言語で書かれてるの?
てめえの使ってるOSは、デバイスドライバは、何の言語で書かれてるの?
JavaScriptで書かれてる業務系や基幹システムどれだけあんだよ?小数点切り捨てたら0%じゃねえの?
科学技術計算は?ゲームプログラムは?コンピュータグラフィックスは?
JavascriptはVMじゃなくinterpreterでしょ。 あとinterpreterはFortranかもしれないしCかもしれない Delphiだってありうるし、GCJでコンパイルしたPure Javaかもしれない
横レスだけど、それ論点が違うんじゃないかなぁ・・・
QML最強ですねわかります
うん(力なく)
同意せざるを得ない
そういや、RhinoとJScript.netもあったねぇ。 Rhinoが本当にVM式なのか、VM上で動くInterpretorなのかは知らんけど。
Qtで作成したアプリもやたらもっさり感満点なのはなんで?
>>398 俺はそんな感じしないけどなぁ。どんなアプリ?
うんこなう
QtCore4.dllとかQtGui4.dllとか同梱されてるアプリは 100%Qt製と思ってええのん?
Qtで作るともっさりなんじゃなくて、Qtに限らず普通に作るともっさりになりがち さくさく動くアプリは開発者がさくさく動くように作ってるんだよ もっさりなのが多いのは開発者がタコかそこに力を入れてないだけ
同意せざるを得ない
ユーザーの誤操作で誤動作するプログラムはくそだって 昔、先生がいっていました。
車も原発も糞
業務系では運用で回避が基本なのでプログラムではなくてオペレータの責任です
>>393 >QML最強ですねわかります
スケーラビリティがあればね。小物アプリまでならとてもいい。
「QMLはただの選択肢」ってたまにNokiaの人がブログに書いてるけど 選択肢が増えるのって、この業界じゃあんまいいことじゃないんだよな・・・ JavaScriptが嫌われるのもブラウザ戦争による無駄な苦労が大きそうだし
携帯小物アプリならば選択肢にはなるけれど、CADや複合機などでは選択肢にすらなり得ない。
412 :
【吉】 :2012/05/01(火) 17:11:17.09
おみくじ
あ〜 QtPluginの追加の仕方がわからない 公式に書いてある方法じゃ通らないよ パス通しても・・・
その程度こともできないで、今時Qtを使う理由ってなんなの?
C++入門として最適
>>413 QCoreApplication::addLibraryPath() はやってみた?
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)等を継承した場合も同様のエラーが発生しました。
>>417 ・Q_OBJECTと書いたヘッダーファイルをプロジェクトに加えておく
(.proファイルのHEADERSのところに書いておく)
・qmakeを再実行してから(Qt Creatorなら[ビルド]→[qmake実行])
ビルドする。
これでOKなはず。
>>418 レスありがとうございます。
環境はQTCreatorを使っています。
Q_OBJECTと書いたヘッダファイルは
プロジェクトツリーの「ソース」→「新しいファイルを追加」で作成したもので
.proファイルには既に追加済みでした。
・qmakeを再実行してから(Qt Creatorなら[ビルド]→[qmake実行])
こちらのほうは再度試してみましたがダメでした・・・。
先程、新規プロジェクトを立ちあげて、テストクラスを作成したところ
QGLWidgetを継承したサブクラスでsignal,slot共に作成できることが確認できました。
もしかしたら、コンパイル設定がどこかおかしくなってしまったのかもしれません。
一度、新規プロジェクトに作成してソースコードその他を再度登録してコンパイルを試してみます。
clang++でqt使ってる人いる? コンパイラーとリンカー、qmakeのどこで指定すんだっけ?
Qt 5はclang++になっているのでそれを見てみては?
>>419 qmake実行と同じことだと思うけど、Makefike類をいったん全部消してもダメ?
俺は意味不明なエラーになったときは全てクリーンしてリビルドするとだいたい直る気がするw
>>423 この現象は、それでは直らないんだよ。
原因は、新たにmocで処理しなければならないファイルが増えたのでMakefileを
作り直さなければならないことを、qmakeが認識できてないことにあるらしい。
俺もよくわかってるわけじゃないんだが。
クリーンとかリビルドってのは、コンパイル以降の話なのでこの場合は無関係
だと思う。
>>417 >このSubクラスでsignal, slotを用いるためにQ_OBJECTマクロを
>クラス内の先頭に記述したのですが、以下のようなエラーが発生しています。
コンパイルした後でQ_OBJECTを追加するとmocを動かすルールがMakefileに入っていないのでこのエラーになります。
qmakeを実行して、mocを呼び出すルールが入ったMakefileを生成すれば直ります。
426 :
デフォルトの名無しさん :2012/05/03(木) 08:11:17.23
Qt 5はWindowsもclangなん?
BlackBerryがQt採用
429 :
デフォルトの名無しさん :2012/05/04(金) 01:53:41.99
QMLだけ対応とかなら いらないです
携帯電話向けのQML以外はオープンソースだから自由にやればよい。 NokiaのTroll達はうまい逃げ場を作ったものだ。
431 :
デフォルトの名無しさん :2012/05/05(土) 03:24:01.02
432 :
デフォルトの名無しさん :2012/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++のパスを除いたりを試して
みたのですが、うまくゆきません。
何が足りないのか、アドバイスいただけないでしょうか。
よろしくお願いします。
>>432 >オープンソースのものをとりあえずコンパイルしてみたいという段階の初心者なのですが、
であれば、CMakeは使わずにMinGWを使えば簡単にコンパイルできます。
434 :
432 :2012/05/06(日) 12:09:53.94
レスありがとうございます。 フリーのソフトのプロジェクトをビルドしたい感じでして、 INSTALLファイルを見てみるとcmakeでビルドするように書いてあるのです。 ディレクトリ構成がMinGWでビルドする用になっていない気がしまして・・ あまり関係無いでしょうか。
Debian + Qt2.8.1 にアップデートしたら、 QNetworkManager が、RC4 暗号化を使ってる https サイトに接続できなくなった、、、 デバッガで追うのは明日以降にして、バージョン戻し中、、、 徹夜しそう、、、orz
バージョン戻したら動いてくれて助かった、、、 とりあえず LD_LIBRARY_PATH で回避。
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を作り直しか。 チラウラスマソ
clang早く来てくれー
440 :
438 :2012/05/08(火) 19:10:19.57
sourceforgeが込んでてMinGWのアップデートに失敗、4.6.1と4.6.2が混在している状態だったので死んでただけだったorz
QGraphicsWebviewでスクロールするとflashがずれるのどうにかならんかなー
442 :
デフォルトの名無しさん :2012/05/08(火) 23:16:16.53
PyQt4を使っています。
http://pastebin.com/qXE22gg9 のようなコードを書いてscrollAreaの中に縦の長さが動的に変化する(動的にlayoutに追加している)Widgetを組み込んでおり、横方向はscrollAreaに合わせ、縦はボタン数に応じて伸長するようにさせたいのですが、どうしたらいいのでしょうか?
adjustSize()では横方向の大きさがあわず、しかもなぜかspinBoxの値が2の時にbuttonPanelの大きさが変わっていないのかボタンが小さくなってしまいます(3以降は逆にだんだん大きくなっていきます)。
ButtonPanelをButtonLayout(QVBoxlayoutを継承しButtonPanelの機能を持たせたクラス)に変えたら、横方向はぴったりなのですが、中身が縦方向に伸長しませんでした。
Qtを初めて使ったのですが、デバッグについて質問させていただきます。 適当なGUIアプリケーションを作って、デバッグを行うと警告メッセージダイアログが表示されます。 具体的には、CDBバイナリが見つからないからGDBengineを使いますといった内容です。 もちろん、現状ではブレークポイントでもブレークしてくれません。 QtSDKをインストールする以外にデバッグを行うためには細かな設定が必要なのでしょうか? それとも、インストール時の問題なら、再度入れなおしてみるのですが・・・
Qtを初めて使ったのですが、痛くてとても入りません。
>>442 俺が適当に書いたサンプルコードをそのまま使うなよ…
ButtonPanel.__init__で
self.layout.setSizeConstraint(QLayout.SetFixedSize)
でいけた(PySideで確認)、他にはボタンのminimumSizeやsizePolicyをいじるとか
>>443 VC++で使うならWindows SDKのDebugging Tools for Windowsを入れないとダメだったと思う
よくわからないけどとりあえず触ってみたいってことならMinGW版のSDK入れればそのままいけたはず
あの例の延々、延期になってた本が発売されてる・・・
448 :
デフォルトの名無しさん :2012/05/09(水) 14:36:05.48
>>434 レスありがとうございます。
cmakeで生成されるconfig.hがビルドに必要なようでして、やはりcmakeを
使う必要がありそうで、まだ悩んでいます。
QtCreatorでプロジェクトの中にあるCMakeLists.txt を開くと
cmakeでビルドするウィザードが出ることが分かったので、
そちらのやり方に変えてみているのですが、まだつまづいています。
CMakeウィザードに、
「/path/to/build_dir/ の中にcbpファイルが存在しません。
CMakeを実行してこのファイルを生成して下さい。・・・」
のような表示が出るのですが、ジェネレータの選択オプションが空になっており
何も選べず、先に進めません。このジェネレータとは何なのでしょうか?
どうすれば先に進めるか教えていただけると嬉しいです。
http://toro.2ch.net/test/read.cgi/tech/1329530477/401-500
あの本出てるぞ。今度は出す出す詐欺じゃなくて、マジで出た
実践Qt4? 誰か買った奴いないの
後数ヶ月でQt5がリリースされるタイミングで出されてもという気がしないでもない
むしろ Qt5 出てしまうとやばいので慌てて売りに出たという
454 :
デフォルトの名無しさん :2012/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 わざわざありがとうございます。こちらの方がすっきりしていますね。参考にさせていただきます。
456 :
デフォルトの名無しさん :2012/05/09(水) 21:52:59.95
Qt 5も出す出すと、また延期。現状ボロボロだからまたまた延期で、 出ても使えるようになるのは5.1か5.2。
まるで MS の製品の話を聞いているようだ
Qt Projectになってから収拾が付けにくくなっているな。Qt 4との互換性も徐々にないがしろにされていっているし。 Troll達がNokiaで生き残るためにはそれしか方法がなかったのだろうが。
馬鹿には無理
質問です。 QLineEditを用いて、文字入力をしているのですが その際、一つ実現出来ない機能があって悩んでます。。。 文字を入力する際、QLineEditに表示されているカーソルを 「|」ではなく「_」にして、線を文字の下に表示するように したいのですがどうすれば出来ますでしょうか? また、「_」は全文字ではなく、常にカーソルがある位置にある 文字の下にのみ「_」を表示させたいです。
アンダースコアが入らないってこと?
ばかですか?w
>>463 アンダースコアは入力出来るのですが、
カーソルの位置にある文字の下にアンダースコアが入れられずに悩んでる状況orz
例えば、TextEditに文字が無い場合はTextEditの先頭で"_"が点滅していて、
「a」と入力するとaの下で"_"が点滅。
右のキーを押すと"_"がaの隣に移動して点滅という具合です。
>>463 少し訂正です。
「カーソルの位置にある〜」と書きましたが、
そもそもEdit上で点滅しているカーソルを"|"ではなく"_"にしたいという考えです。
QLineEdit の派生クラスを作って、カーソルを自前で描画すればいいのでは?
結果報告
>>468 のサイトよりソースをダウンロードし、
それをカスタマイズすることで意図する動作となりました。
有難うございますm(_ _)m
お役に立ててなによりでござるぞ
Iビーム
これは・・・ デスクトップ向けのC++部分はintelが買い取ってくれないかな
そだね、インテルかIBMがいいね。Google だとバグだらけ。
macやlinuxでQWinHostみたいなのありますか?
googleは自社で開発できる能力はなく、買収しかできないからなw
あります
やっぱ、最終的に勝つのは、プログラム界のブラジル・Gtkだな・・・
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 まさにその通りだった…んだけど,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とかをいじってたらコンパネに無いのを削除して下さいとか言われてよくわかんなくなったので再インストールしてきます…
>>483 pro ファイルを開いて、stddef.h の行があったら、それを削除するとどう?
485 :
481 :2012/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 :2012/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 :2012/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 :2012/05/15(火) 13:42:57.56
490 :
481 :2012/05/16(水) 10:37:44.52
Qt 4.8でinitializeGLFunctionsで落ちるんですが原因わかりますでしょうか?
環境くらい書けよ
環境
>>491 プロジェクトのオプションで、実行環境がデフォルトのビルド環境になっているとエラーが出る。
システムか、クリーンにするべし。
4.8.0以降はglut全滅。というかincludeすらしてないよ。 4.7.4にもどしたらいい。
>>495 プラットフォームに合わせて、GLUT/glut.hかGL/glu.hをincludeすればglutは使えるし、
QMatrix4x4などでglutを使っているのを書き直せばglutなしにもできます。
今一番安定なのは4.7.4かな
>>494 ありがとうございます
QGLContextがNULLだったのが原因ぽいです
499 :
デフォルトの名無しさん :2012/05/19(土) 19:05:55.28
Windows8でタブレット式になったら、Qtで作ったGUIアプリケーションも 動くのかな?
500 :
デフォルトの名無しさん :2012/05/19(土) 19:15:30.56
動かないしタブレット関係ないから手を出さなくていいよ
え?まじで・・・ Qtでタブレットアプリ作れるのはいつやら・・・
KDEタブレットがあるじゃないか
>>501 Nokiaが関わる以上だめたね。QtはNokiaに潰された。
Nokiaももうすぐつぶれる
年末迄持たないだろうね。
すなおにアンドロイド機種だせばよかったのにね
QTableWidgetで列の幅の自動調整はできませんか? ラベルにあわせたり、テーブルの横幅に合わせて等幅にしたりしたいです
QAbstractItemDelegate::sizeHintとか
Qt Projectは、Nokiaに見放されようとしているTrolltechの開発者の逃げ場として考え出されたもので、 Qt 5でサポートされる機能も、Nokiaに拾ってもらおうとしているものだけをやろうとしている。 それ以外のものは、オープンソースにしたので、メンテナがいないからサポートされないと逃げている。
すっごい初歩の質問で申し訳ない すでに最新のMinGWはインストールされてるんだけど QtSDK付属の古いMinGWを一緒に入れてQtからはそっち使うようにしたほうがいいんかな
なんだオワコンか
勝手に買収しといて、ポイ捨てとは・・ Nokiaに殺意すらおぼえる。全Qtプログラマーの恨みをひとえに買うことだろう。
iPhoneもAndroidも使えないマルチプラットフォームって
4.7から4.8にしようと思ったら変わり過ぎてて死んだ。他の皆はスムーズに移行できてるんだろうか。
20レス位上
4.7.4がこの先10年使われるようになるとは まだ誰も思ってなかった
p = fork(qt); assert(p->version <= 4.7);
>>513 >iPhoneもAndroidも使えないマルチプラットフォームって
この2つを正式サポートしないというのはとってもおかしい。
519 :
デフォルトの名無しさん :2012/05/25(金) 08:10:50.44
リナザウみたいにQtを根底から使うならともかく アプリケーション毎に数10M余計に配布するなんてアホみたいだからな
いやQt for Androidはランタイムはランタイムだけで1パッケージになってる
今時「ランタイムを別途インストールしておいて下さい」なんてもっとありえないわ。
自動的にインストール画面になる とりあえず知らないなら語るな恥ずかしいから
Qt for Androidってどのくらいできてんの?
別に君が素晴らしいシステム作ってコアメンバーと協議の上マージしてもいいんだよ?w
身売りしなければ自ら手をつけたが、妨げになるから直接手を出さないのだよ。
527 :
デフォルトの名無しさん :2012/05/25(金) 22:22:07.54
>>521 >今時「ランタイムを別途インストールしておいて下さい」なんてもっとありえないわ。
Windowsではそうするのがずっとそして今も当たり前。
>>528 Windowsで商用ソフトの場合インストーラーでそこを解決するからね。
フリーウェアとかだと「〜ランタイムが必要なのでインストールしてください」とか書いてあるのが多くて、イマドキの大多数のユーザーはそれ無理だろといつも思う。
今はアメーバピグが必要なflashランタイムのバージョン上げただけでどうすれば良いのかわからないユーザーが大量に出て阿鼻叫喚の騒ぎになる世の中。
だからと言って popup出てきたらとりあえずインストール続行してください とか勝手に習慣付けてしまうと ウィルスやスパイウェアの蔓延につながる
だから多少配布サイズが大きくなろうが必要なランタイムはインストーラーに全部入りで配布されるのがwindowsでは主流になってる訳で。 それが気持ち悪いとか無駄だとか思ってしまう人間はこっちの側の人間だから、大多数の物のわかってないお客様に合わせるしかない。
スラド民はどっかいけ
また奴らがなにかやらかしたのか
>>531 だって開発ソフトの話だろ?
C++でプログラミングする奴が別途インストールに抵抗あるってのはわけわからんぞ
いつからそんな話に
現在フォーカスしてるエリアごとにメニューバーに表示されるメニューを動的に消したり現したりしてるんですが menuBar()->addAction( menu ) の処理が重いらしくフォーカスかえるごとにラグが発生するんですがこれって普通でしょうか insertActionやmenu->menuAction()->setVisible(bool)でも同様に処理が遅くなるんですが menu->addActionでは全く処理が遅くなりません
>>536 それは開発ソフトの話じゃなくてエンドユーザーに配布する時の話じゃないのか
539 :
519 :2012/05/29(火) 16:06:09.46
みんなごめんよ…
>>537 XPでmenu->menuAction()->setVisible(bool)使ってるけど重くないよ
そっちの環境は?
541 :
537 :2012/05/29(火) 16:25:51.91
>>540 Windows7 64bit
新規に立ち上げてmenuBarに追加なりしてみたけど
そっちのほうでは処理落ちがないみたいなので
どこか干渉してる気がしないでもないですけど
やってることはmenuBar()->addAction()だけなのに何故処理落ちがするんだろう
>>539 謝る暇があったらどっちの話だったのかはっきりさせてよ。
543 :
デフォルトの名無しさん :2012/05/29(火) 17:59:04.57
こんなん利用者側の話に決ってんだろ、コード書けて自分で遊ぶならその位できて当たり前 C++はシグネチャがちょっと変わっただけで死ぬんだから 面倒なビルド・バージョン管理をカジュアルユーザーに任せる事はできない 結局マイナーなQtではアプリケーション毎にほぼ静的リンク状態で配布する事になりストレージを圧迫する Qtは一発物のアプリケーションや組み込みシステムの一部を短期で作るにはいいものだと思うけど 不特定多数しかもスマホに配布ともなると無理があるよ今の状態では特に 俺はスマホターゲットなら素直にObjCやJavaで書くかな互換性の保証は正式なベンダに任せりゃいい つかねスマホでこんな面倒な事をしたら☆一付けられちゃうぞ 何が言いたいかというとNokia氏ね
☆1どころかインストールすらしてもらえないよ。
545 :
537 :2012/05/29(火) 19:29:04.75
QMainWindowのrestoreState()を削除してみたら処理落ちが消えました iniファイルが膨大な量になってたのが関係してたみたいです
デフォルトはレジストリなので大量だとおかしくなる気がするけれど、 iniファイルにするように変えているなら、大量でも問題なさそうな気がする。
後免奈半利線
Qt CreatorでVC++のコンパイラを使ってるんだけど /MTとかコンパイラオプションを指定したい場合はどこですればいい?
>>548 proファイルに以下の行を追加
QMAKE_CXXFLAGS += 追加のコンパイラーオプション
QMAKE_LFLAGS += 追加のリンカーオプション
QtCreaterのデフォルトのオプションが気に入らない場合は += ではなく = にして自分で全て設定する。
>>549 レスありがとう。
レスを参考にやってみたところ、VC++でいう/NODEFAULTLIB:**はできました。
まだLNK2005エラーが出ていますがなんとかなりそうです。がんばります。
今からQt覚えて人生ウハウハになるかな?
ならない AndriodとiOSをサポートする予定のC++Builderの方がまだいい
俺はC++Builder買う金ないからQt使い続けるけど
554 :
デフォルトの名無しさん :2012/06/01(金) 20:03:29.64
残念だけどQtは負け組み 悪貨は良貨を駆逐する
ここが被害担当艦なのはわかるんだけど みんな今はどこでQtの話してんの
設計がいきあたりばったり感が満点だしな
C++ BuilderはBorlandを離れてから腐りきったな。バグ多いし、ドキュメントは 無茶苦茶。
なんかwin8で劇的にwindowsプログラミングの構造が変わりそうだな MFCなんて勉強してる場合じゃないな
Win8が出なくてもさすがに今時MFCを勉強してる場合ではないですよ?
VS2012にもしっかりMFC入ってたしインストール項目の大項目の一つになってたけどな
じゃあMFC勉強した方がいいね。Feature Packも
ぶっちゃけこれからはWebの時代だからC++自体がダメだろ JavaScriptとPHPの勉強しないと負け犬一直線
563 :
デフォルトの名無しさん :2012/06/02(土) 15:34:21.21
JavaScriptとPHPの勉強してたら負け犬一直線
WTLはあってもMFCは無いは〜
>>562 んなもん派遣にやらせりゃいいような雑用だから
まとまった金にならん
566 :
デフォルトの名無しさん :2012/06/02(土) 15:42:20.65
LLジャンキーは死滅しねーかなDSL並の糞言語ばかり作りやがって
>>566 C, C++にすんなCやC++みたいなLLがあるからこそOSがまともに動くんだぞ
JavaやC#みたいなHLで作ったOS見てみろできたには出来たらしいが
遅すぎてマトモに動きはしない。Javaで書いたOSに至っては、
アセンブリが多すぎて見るに耐えん。
568 :
デフォルトの名無しさん :2012/06/02(土) 15:50:07.05
バーカC/C++はLightweightLangaugeじゃねーよ高級アセンブリ言語だ
>>567 >>遅すぎてマトモに動きはしない。Javaで書いたOSに至っては、
Javaで書いたOSに至っては、
Javaで書いたOSに至っては、
Javaで書いたOSに至っては、
高級アセンブリっていう人多少居るけど、 x86ニーモニックやCLIやJavaの中間コード、その他のニーモニックの様に Cが他の言語のアセンブリ(他の言語の中間言語)として使用される事って殆ど無いよね。
アーキテクチャ毎のスタックレイアウトやアラインメントを 考慮しないと扱えないからそういう呼び方がされる訳で LLが爪切りならC/C++はカミソリ 簡単に広範囲を切り裂けるけど諸刃だし扱いは難しい
さすが週末進行
>>568 車の様に日本が世界を牛耳ってる業界でもないのに
日本の一部でしか通じない独自表現をドヤ顔で主張されてもねぇ
世界一般のLLの意味の方がガラパゴスな意味より明確だな
主張とか便所の落書きにまぁ大層な事で
まぁLLって言ったらスクリプトですね
ガラパゴス・プログラマー。略してガラグラマー。いいかもしれん。
>>579 インタプリターである必要もなくて
スクリプトってプログラムに組み込む制御言語なんだよな
>>579 PerlやPythonはScriptじゃない(Scriptとしてもつかえるが)から
LLでは無いんだよな
えっ
さーてキナ臭くなってきなたな1ぬけた
公式でスクリプトだなんて言ってる言語も少ないしなぁ。 シェルスクリプト(シェルの組み込み言語), JavaScript(元ブラウザ組み込み言語) VBScript(元ブラウザ組み込み用に再設計された言語)てなかんじだし。 lispはコンパイルできるけど、Emacs上ならスクリプトと呼ばれる。
こんなネタで伸びてるなんてQt死んだな
だからスラド民は巣に帰れと(ry
Nokiaに身売りした時点で死んでる。
そういう問題じゃなくて、クラスの設計自体がOOPを知らない奴が やっつけでやった仕事感満載じゃん
他人の話題にケチつけて自演してでも自分の話題を盛り上げたい奴が居るようだ。
↑ マルチポストいくない
彼氏にチンポしゃぶらせながら寝るわ。
>>587 スラドなんか向こうの住民が勝手に2chを目の敵にしてるだけなんだから意識すんなよ気持ち悪い。
スラドってAppleファンボーイの巣だから Objective-Cのバインデイング出してやれば荒らさなくなるんじゃね
よーわからんが、 ム板なのにコードと関係ない話をもっともらしくしてる奴は スラド民だってじいちゃんが言ってた。
MacとWinでクロス開発してるが、何でMacだとmakeがクソ遅いんだ?make -jして並列ビルドしても遅い。 vcのコンパイラが速いだけ? Linuxではビルドしてないので知らん。
Macだから。他にも色々遅い。
>>574 , 575
待てや
LLの軽量ってのはリソースが軽量なんじゃなくて、開発工数が軽量ってだけだよ。
AWKなんて昔は重いといわれてたんだが。
一スレッドで並列処理
>>574 >LLってリソースを喰わない言語の事を言うんですけど
開発リソースは喰わないね、コード量も少ない。でもメモリーを喰って、速度が遅いのがLL。
今時は人件費の方がはるかに高くつく事が多いのでそれもまたあり。 21世紀の未来に生きてる筈なのになんでまだコンパイル待ちとかあるんだよ。
Qtと何か関係があるのか?
Qt動きそうじゃね?
QtはWindows 8のMetroスタイルでは、きっと使えないだろう。
Aboutを「おおよそ」の意味で使うようなもんだろ Engrishだから仕方ない
>>569 のWikipediaの記事は引用もソースもない時点でチラ裏と大差ない
LLは和製英語的なものと捉えるのが穏当
日本人が書いたわけじゃないし、外人がそう表現する文化がある事が解る事が重要で それそのものが正確かどうかなんざどうでもいいと思うが。 たとえば、江戸時代に宇宙人を信仰してた人間がいたとして、 宇宙人が存在してたかどうかはどうでもいい信仰してた人間がいたという 客観的事実が重要
スレチやめろ
>>609 >Qt_5_on_Windows_8_and_Metro_UI | Qt Wiki | Qt Developer Network
空っぽではないか。
Mac OS XもQtのGUIツールは、ジェスチャーに対応していないから使い難い。
Magic TrackPadのスクロールも反応が鈍過ぎて、Safariのように軽快に動かず、見たいところで止められないので、使う気がなくなる。
スクロールバーも出っ放しで、操作していないときに消すようにはできない。
MetroとQMLのセットか 誰得なんだよ
QMLの時点で誰得。
QML Desktop Components for Qt 5のできの物足りなさ過ぎさとMetroもどっこいだろう。 それに、QMLとMetroで書いたのを、他のプラットフォームで動かすために書き加えるコードが多くなりそう。
QtCreatorがCDBを認識してくれない・・・
やべ普通に *.pro があったわ
でもGoogleに開発者登録とChromeWebStoreだっけかあれに登録しなきゃならないんだよなGoogleアプリって そうしないとテストすらできない
>>627 最近動かしてないから気づかなかったけど、
いつのまにそうなったの?去年までは自前で作った.nexeが動いたよ?
ノキアをジャンク級に格下げ、見通しネガティブ−ムーディーズ
http://www.bloomberg.co.jp/news/123-M5NQ9I6S972801.html 6月15日(ブルームバーグ):米格付け会社ムーディーズ・インベスターズ・サービスは、フィンランドの携帯電話メーカー、
ノキアの信用格付けをジャンク級(投機的水準)に引き下げた。同社は携帯電話部門の赤字拡大見通しを示していた。
ムーディーズは15日の発表で、ノキアの優先債務格付けを1段階引き下げ「Ba1」とし、投機的格付けで最も高い水準に設定した。
見通しは引き続き「ネガティブ」とした。
ブルームバーグがまとめたデータによると、ノキアの3月末時点の債務総額は49億2000万ユーロ(約4880億円)。
3大格付け会社では、スタンダード・アンド・プアーズ(S&P)とフィッチ・レーティングスが4月に既にノキアの格付けをそれぞれ「BB+」と、
投機的格付けで最も高い水準に引き下げていた。見通しもネガティブ。
もうだめだー
普通にandroid行ってても結果は同じだったかも知れんが、 Windowsは苦し紛れの大博打も良いところだったからな。
まあこれでもシンビアンをキープし続けるよりは、大分マシになったんだろうけどな
WindowsPhoneは5年後には iPhoneより売れているんだぞ
鬼が笑うってレベルじゃねーな。
髪のダメージを守る・・・ それが、キューティクル¥
637 :
デフォルトの名無しさん :2012/06/19(火) 20:14:24.88
Qtってノキア潰れたらどうなるの?
KDEがあるLinux版以外は全く保守されなくなる
639 :
デフォルトの名無しさん :2012/06/19(火) 20:35:55.69
じゃあ勉強しないほうがいいのかな これから勉強しようと思ってたんだけど
何事も知ってることに無駄はないが・・・。 あと、オプソだし、Nokiaが氏ねば有料ライセンスが死ぬから 上手いこと行けば化けるかもしれん
そもそもiphoneが売れすぎたんだ・・・
ソースは公開されてるんだから、放棄されたら自分で保守すればいい
>>640 > あと、オプソだし、Nokiaが氏ねば有料ライセンスが死ぬから
Qt の商用ライセンスの権利は既に別会社に売却されたんじゃなかったけ?
Qt 4.7.4 (32bit) on Linux において、 QWebView *view = new QWebView(parent); view->setHtml("AAAA"); view->show(); とした場合、*viewのサイズを"AAAA"を表示するのに十分な必要最低限にしたいのですが、 上手い方法はないでしょうか。 QWebViewのソースを見たのですが、sizeHint()は800x600とハードコーディングされているようです。
>>640 有料ライセンスが死んだら採用する所が減って更に駄目になる気が
有料ライセンスが死ぬような状況になったら 修正BSDライセンス化するんじゃねーの
ノキアにとってそれが何の得になるの?
話が全く通じてないな。噛み砕いて説明するのも面倒くさい
流石オプソ乞食達はアホだな。
なるほど、プロプラソフトが開発終了するとソース公開しろよとワラワラ群がるノリなのか。
もう本当に業界人ごっこはメンヘル板でやってくんないかなあ。
と、モドキが申しております。
iOSとAndoroidの両方で動くアプリが一発で書けるとかなら需要ありそうなのにね いい所に貰われて行って欲しい
Qtの商用ライセンスの権利は、NokiaではなくDigiaが所有しているのだからもう貰われてしまっているんじゃないのか。
KDEのコミュニティの公約って今でも有効なんでしょ? ここまでQtは成熟してるんだし 開発者たくさんいるし使えなくなることはありえない
最近使い始めたけど Qt Assistantが最強すぎる
Qtlabsの説明見てブラウザ作ってみたんだけど やたら遅いし日本語表示は変になるしQtwebkit完成度低すぎ 本格的にブラウザ作るならChromium埋め込みがベターかな?
>>659 nokiaが「潰れたらパブリックドメインにします」って弁護士に遺書預けてあるならともかく、潰れたからっていきなりBSDで公開されたりはしないだろうよ。
もちろんLGPLは有効なままだけど。
>>662 > nokiaが「潰れたらパブリックドメインにします」って弁護士に遺書預けてあるならともかく、
そんなもんあっても債権者や管財人がダメって言ったら無効だろ
潰れる前に分離しちくり
>>663 まあblenderみたいに誰かが権利買い戻す事になるんだろうな。
>>661 いろいろあるけど、HTML5のCanvasは遅いだけでなく描画品質が酷い。
WebKitの実装を比べるとQtWebKitの完成度は低い方なので注意が必要。
つか、ライブラリの質もかなり雑だし .net framework使ったほうがいい
669 :
デフォルトの名無しさん :2012/06/22(金) 20:13:51.90
まあ.netと比べたらQtが勝つ所ないわな
.netはWindowsでだけしか使えない。.netのAPIタコだから、WindowsだけでなくQtが勝つ所は一杯ある。
標準化されてるC++だってところが重要なんだよ。 C#なんてVBみたいなもん。
なにこの集団独り言スレ
.netはmacでもlinuxでも動作しますが? まぁ、のろのろとw
.NETが勝ってるのはVisual Studioのおかげ だがVisual C++で.NET使うのは微妙すぎる C++でGUI作るならQtかFLTKが良さそうだと思った
wxWidgets
>>675 うん。あれは結構いい線行ってる。けど両方試して結局Qtを選んだ。
>>674 Visual StudioでC++を使うのは、使い勝手が良くないよな。
デフォルト設定じゃリファクタリングとかやりたくなくなるし。QtCreaterの方が遥かに洗練されている。
>>677 一番大きいのはRAD/IDEかな。wxWidgetsのIDEはCodeBl;ocks+wxSmithとか、wxDev-C++
とかいくつかあるんだけど、みんなイマイチ。wxDev-C++は出来が良かったけど更新止まって
るしDelphi製。C++に移植するって話があったけどどうなったのかな。
Qt Creatorも初期は酷かったけど、最近はかなり良くなった。
あとwxWidgetsはソース配布でビルドが必要。ただビルドが必要なだけなら構わないん
だけど、コンフィギュレーションファイルの設定が沢山あって、細かく設定しなければならない。
バージョンアップのたびにこれを毎回間違わないようにやるのが面倒。まあ、前回のを
残しておいて、WinMergeで比較しながらやればいいんだけど。
数年前の話だから、今は少し変わってるかもしれない。
>>680 wxDev-C++はその後Windows 7対応とかしてて更新されてるね。スマソ。
>wxWidgetsはソース配布でビルドが必要 えっ?w
>>666 いろいろやってみたけどQtwebkitはいまいちだった
ベースが534.34なんて化石エンジンなんだから仕方ないけれど
Qtwebkit使うならそれこそIEコンポーネントとか作ったほうがいいのかもしれない
経済とは独立したものですし、フリーソフトウェアを使って金を稼いでも構わない点からも、共産主義ではないです。 どちらかというと大企業の搾取に対するカウンターとして生まれたもの。 ソフトウェアがソース非公開になって制限かかりまくって融通が効かなくなり、 研究に支障が出たから必然としてフリーソフトウェアが生まれたわけで、 やっぱりアカデミックの流れかと。 あの頃の大学におけるUNIXの改変はAT&Tの独占禁止法に守られてただけで、 1984年にその独禁法が解禁されてUNIXが改変禁止、秘密保持契約を結ぶなら改変共有禁止となったため、 GNUの開発が始まりまったという経緯があります。
誤爆? それはさておき、GPLは、どう見ても、危険な共産主義だろ
>> 684 QtWebKitがいまいちな(いまに、いまさん、、、)のは確かだが、Qtのディストリビューションに入っているものは、 Qtリリース時点のもので、QtWebKitのリポジトリのと勝手に入れ替えてくれと言っているよ。
資本主義の高みから、他人に共産主義を振りまくのがいいんだよ 教祖のストールマンだって実際やってることはそう
ム板であることを忘れるスレだなおい。 手動かせよ
しこしこ
クチュクチュ
>>686 共産主義の様に他主義に逃げることは禁じない
共産主義の様に、関係を持とうとしてない(ソースを利用しない)
人間に主張を押し付けたりはしない
資本主義の著作権法に法って、著作物の権利をこうしし、
利用者が、自分でソースを改変できる(フリー)ようにしてるだけ。
プログラム本体に対する金品の収集などは一切禁じていない。
プログラム本体とは別途、ソースに課金することは禁じてるが。
「会議」がアイデアを潰す 若手や中堅がイノベーションを生み出す新しいアイデアを出す時 立ちはだかるのがジジイどもの支配する「会議」という壁だ ・ジジイどもに理解できる企画でなくてはならない ・ジジイどもの好みに合う企画でなければならない ・既に成功した事例がなくてはならない ・ジジイどもに気に入られている人物が提案者でなくてはならない ・ジジイどもに気に入れられていない人物が関わっていてはならない ・ジジイどもの支援が不要な企画でなくてはならない ・にもかかわらずジジイどもにも活躍の場を与えねばならない ・ジジイどもの気まぐれな口出しにいつでも応じなければならない ・失敗してもジジイどもが責任をとらなくてよい企画でなくてはならない ・成功したらジジイどもの業績になる企画でなくてはならない 若い頃は前世代のおかげで繁栄したくせに、自分らの時代には経済を衰退させ そのツケを後世代に回す団塊ジジイ、バブルジジイどもが日本の病巣
客もジジイかガキだからな。
病んでるな
>>694 昔、北朝鮮が「地上の楽園」と自称してたのとそっくりだな
やっぱりメンヘラが貼りついちゃってたのね
いまさらだな
>>698 どう自称してたんだ?
あとGNUは自称じゃなく事実だがな。
使う前から、ルールに従えないなら使うなとはっきり言ってる。
GPL汚染
つかわなければいいだけ 人の物のお世話になって文句言うとか朝鮮人かよ
そういやThe KMPlayerとか平気でGPL違反してるよな ここでぐうたれてるヤツも祖国に帰ってどうどうとGPL犯せばいいんじゃね 周りの誰も咎めはせんだろうしお似合いだわ
>>698 朝鮮にはお前の同胞がいっぱいいるってよ
まさに地上の楽園だなw
馬鹿には無理
仕事ではC++どころか、デスクトップアプリ作ること自体がまずないし 趣味で組む暇もないから手を動かせない
じゃあ隠居するまで作れないな
Qtでテキストエディタを作っています. このテキストエディタ特有の機能として,「行ごとに」最終更新日時を保存し,その日時に応じてテキスト変更などをしたいと思っています. (例えば今日と書いてある行は後からその行の最終更新日時に置換するみたいな) QTextEditからQTextDocumentを取り出し,firstBlockからQTextBlockを辿っていくことで,行ごとのテキストが取得はできる模様です. ですがQTextBlockは読み取り専用のため,ある行を特定してその行のテキストを別のテキストと差し替えるといったことができません. テキストは複数行にわたるので,QTextEditでこのような事が可能になる方法をご存じの方はいらっしゃいませんでしょうか?
むり
QTextCursor使って置き換えるしかないんじゃね
QtWebKitでWebページを表示している画面を画像(スクリーンショット)として取得する方法って無いですか? 一般的には、ウィンドウ内に描画されている画像を取得して、加工して別ウィンドウに表示、などの動作をさせたいのですが。
QWidget::render
どうもです
× 関わらなくなる ○ 関われなくなる(経済的に)
仕方ない MSを応援するか
うぇー
Mac - Apple の死にかけの窮地を救ったのもマイケロソフト
いい加減古くさいMFCの変わりに MSVCにQt標準搭載!
Qt終わってたのか
5年耐えればWindowsPhoneはiPhoneより売れるようになるから なんとかなる
WindowsCE って10年以上前からあるけど流行ってないよね Jobs が先駆者みたいに言われてるけど スマフォw の元祖は MS
スレ違いの話までして無知を晒すのは何故?マゾ?
727 :
711 :2012/07/04(水) 17:07:04.04
>>713 なるほど…やはり一筋縄でいける解法はないのですね…
ありがとうございました.
電子書籍も2000年初めくらいにはMSが既に手を出して、見事に爆死してるんだよな
>>727 > なるほど…やはり一筋縄でいける解法はないのですね…
えっ、 QTextCurosr 使えば簡単じゃないの?
馬鹿には無理
>>725 その頃のCEは、通信するたびにリブートしなければならなかった。
MFCはメモリーリークしまくりで、MSからMFCは使わずにWin32を使うようにと言われた。
>>724 んなもん待たんでも、NACLで組めば、
Android上のChromeで動かせるがな
だれかQtを救ってくれよ
何かのゲーム開発環境で使われてたと思うんだけど思い出せない
MayaとかMaxのAutodesk系はqtに統一されたんじゃなかったっけ。
SMplayer
738 :
711 :2012/07/05(木) 19:28:41.99
>>729 指定行を操作するのにカーソルを操作しないといけないのはちょっと面倒だな〜と思ってしまいまして.
ただ,今実際にやってみたところ,思った以上に簡単にできたので,その発言は撤回させて頂きますw
QtをNokiaが放り投げた場合はやはり資金的に厳しくなるのかな それともどこかしら資金援助するのかね
Samsungが、タッチパネルでオススメレシピを検索できる機能の付いた 冷蔵庫にQtを採用したそうだから、いっそSamsungが買い取ってくれたら 資金的には何の心配も無くなるだけどなぁ。
Samsung Qtとかちょっと嫌だわ
別に今だってNOKIA Qtって呼称じゃないし...
Sharpが引き取ってタブレット戦争にリナザウで乗り込む展開か
ないないw
N9が最終アップデート。MeeGo開発チームがNokiaを離れてJollaに移籍した。 Qt開発チームはDigiaに移籍すると予想。
Digiaがオープンソースのバックアップもするようになるよ。
ふーむ、そろそろQtから別のGUIツールキットに逃げるべきなのかな… しかしそうすると何がいいんだ?
wx
Ext
>>749 そんな必要ないでしょ?
NOKIAがQtを手放したとして,それで他のGUIツールキットと同じ状態になるんだから。
HTML5
C++捨ててWebに走ったほうが早いだろうな。 GUIアプリ案件なんて死滅状態だし、Qtと対抗できるのなんて過去の遺物なMFCくらいだろ
WebはC++より安いのでは?
756 :
デフォルトの名無しさん :2012/07/10(火) 19:15:46.35
wxWidgets良いな
WebだってQt動くしなぁ。 Nokiaがいなくなった所で統合開発環境周りや 基幹構造の変化がなくなるだけだろ、 バグやらコンポーネントの追加ならオプソの範疇で 追随できるわけだし何か困ることあんの?
資金の入ってないオプソは役立たずだから
目先の金に目が眩んで身売りするからからこんなことになる。
んなこといってお前もどうせWin版がLGPL化してから入ったニワカなんだろ
最初からずっと商用版だけを使い続けています。
へぇ BSDLになったらGTKと差別化できて並立し続けるかもね
まあKDEチームはLinux版以外を保守する義理はないから ほかのOSは放置されるけどな
KDEチームだって裾野は広げたいだろうし、 最低限の対応くらいはやってくれるんじゃないかと思いたい
一度ext jsのサンプルでも実行してみるとWebアプリがここまで来たかとビビるよ。 ただ本気でオフラインのアプリを作ろうとすると、進む戻るボタンの扱いとかローカルファイルの扱いとかで挫折する。 データを全部サーバーに保存すればいいが、完全にオフラインアプリの代替にはまだ無理だな。
古いな Ext.js より SmartClient だぜ
NaClだろ常考
>>766 まぁ,ソフトと一口にいっても広い世界なわけで,Webアプリではどうにもならない
分野も沢山あるしね。
770 :
sage :2012/07/11(水) 15:52:44.85
アンチ粘着のでるでる詐欺本買っちまっただ
> 646 名前:デフォルトの名無しさん [sage]: 2012/06/20(水) 04:16:25.22 > 有料ライセンスが死ぬような状況になったら > 修正BSDライセンス化するんじゃねーの
>>771 否定されて悔しかったのはわかるが、そりゃ根拠を示さずに書いてたら妄想扱いされるよ。
>>772 そのレス書いた本人が読んだら喜びそうだw
KDEのコミュニティで数年前にそんな感じの取り決めがあったらしきことが書いてあった
GTKより全分野でライセンス的に使い易くなるじゃないか。
資金を出す者がいなくなって、開発者の質が維持できなくなるな。
モジラみたいな財団立ち上げればいいんじゃね? 奴ら非営利団体のくせにすげー収入あるんだよな。その金でもっと開発者雇えば良いのにどこに消えてるんだ。
世界的にWebスクリプト書きとか業務アプリ書き奴隷以外はいくら払っても人は足りないし来ないからな
779 :
Qtist :2012/07/12(木) 23:16:15.27
すみません。ちょっと質問させてくさい。 QPushButtonのハンドラとして、普通のCの関数を指定する方法がわかりません。 以下のようなソースで試したところ、 void handler_btn() { std::cout << "btn pushed!!!" << std::endl; } int main() { QApplication a( argc, argv ); QPushButton* push_btn = new QPushButton("テスト"); QObject::connect( push_btn, SIGNAL(clicked()), NULL, SLOT(handler_btn()) ); return a.exec(); } (null)::handler_btn()は無いので、connectできませんでした とゆうようなメッセージが実行時に表示されてしまいます。 できないのでしょうか?
>>779 Qt 5ならC++11を使えばできる。
Qt 4ではQObjectのサブクラスのスロットから呼び出すようにすればできる。
main.cpp だけでその機能を実装するってどういう風にやればいいんだと思って調べてみたら
http://labs.qt.nokia.co.jp/2010/07/20/create-signals-and-slots.html こんな感じか↓
mocって奥が深いのな
#include <QtGui>
#include <iostream>
class btn: public QPushButton{
Q_OBJECT
public:
btn(){}
private slots:
void handler_btn(){
std::cout << "btn pushed!" << std::endl;
}
};
int main(int argc, char *argv[]){
QApplication a( argc, argv );
btn push_btn;
QObject::connect(&push_btn, SIGNAL(clicked()), &push_btn, SLOT(handler_btn()));
push_btn.show();
return a.exec();
}
#include "main.moc"
slotはメンバー関数と別物なんだが、 なんで関数ならslotとして使えると思ったんだろ
private slotの接続を外部で接続するって無いわぁ・・・ だったら最初からpublicにしないか
ていうかprivate slotsに書いても外からconnectできるのか! ちょっと勉強になったわw
自演乙 アホ カス しね
787 :
Qtist :2012/07/13(金) 11:09:24.84
>>782 さん
回答ありがとうございます。
最後のmain.mocは、Makefileがあるところで、qmakeコマンドをたたけば
生成されるんでしょうか?
今、出先ですぐ試せれないので・・・教えてクンですみません
(書き忘れましたが、開発環境はUbuntu10.04 でQt4 使っています)
>>779-785 みなさん、ありがとうございます。
自分のやろうとしていることが、フツーじゃないことに気づかされました。^^;
昔、XWindowで作ったときのノリじゃダメなんですねー
788 :
デフォルトの名無しさん :2012/07/13(金) 13:15:22.86
>>785 slot関数をSLOTとして使う場合は、アクセス指定は影響しない。
つまり、アクセス指定が private slots: だろうが protected slots: だろうが、外部から自由に呼び出せる。
slots: を記述するときの private/public/protected が影響するのは
slot関数を普通のメンバ関数として使用するとき。
…らしい。
本家ドキュメントにはこっそり書いてあるが、眠いときには読み飛ばすなこりゃってレベル
オライリーの翻訳入門本にも書いてなかったし…
>>789 > 本家ドキュメントにはこっそり書いてあるが、眠いときには読み飛ばすなこりゃってレベル
> オライリーの翻訳入門本にも書いてなかったし…
工学社の「Qt プログラミング入門」 では、p48 の最初の方で説明してあるね
以下、引用
ーーーーーーーー
アクセス指定は、通常メソッドとしてコールする場合は有効ですが、
「スロット」として接続する場合は無視されます。 したがって、「protected slots:」
で定義された「スロット」をクラス外部から参照することが可能です。
なんかQt Creatorでデバッガがまともに動かないな
え? cdbだけどちゃんと動いてるよ。以前は酷かったけど、2.2位からはだんだんまともに なってきた。
793 :
デフォルトの名無しさん :2012/07/14(土) 15:40:23.33
== test.pro == QT += core gui TARGET = test TEMPLATE = app SOURCES += test.cpp CONFIG += console == test.cpp #include <iostream> #include <QtGui> #include <QtCore> class btn : public QPushButton{ Q_OBJECT public: btn(){} private slots: void handler_btn(){ std::cerr << "hello " << std::endl << std::flush; } }; int main( int argc, char** argv ){ std::cerr << "start " << std::endl << std::flush; QApplication a(argc, argv); btn push_btn2; QObject::connect(&push_btn2, SIGNAL(clicked()), &push_btn2, SLOT(handler_btn())); push_btn2.show(); return a.exec(); } #include "test.moc"
.oO(なんか盛大に勘違いしているようだw)
>>790 なんでスロットの時に無視するんだろ?
何か経緯があるのかね
ただのマクロだから
書き忘れましたが、利用方法としては QLineEdit に書かれている英数字とマッチするQString List のエントリを LineEdit下部に Widget で 一覧表示するというものです。 googleの入力補完のような見た目のものを作ろうとしています。
>>797 show() した後に、QWidget::setFocus() でフォーカスを
再設定するんじゃだめなの?
>>799 曖昧な箇所なので同じ挙動を取るかわかりませんが、
(1) lineEdit_m の入力イベントをキャッチ
(2) widget_m を show
(3) lineEdit_m->setFocus()
という流れだと、フォーカスを持っていかれます。
GUI箇所なのですが、イベントから数百ミリ秒後にウィジェットが出るようなので、
内部的に別スレッドで動かし、準備ができたらGUIを作るという流れかもと懸念しています。
(内部実装に詳しくなくて申し訳ないです)
それでしたら、widget_m が focus を取るのは (3) の後になりそうです。
>>800 widget_m をサブクラス化し、focusInEvent() イベントを受けたら、lineEdit_m にフォーカスを設定するとか、
またはシグナルを発行して外部で lineEdit_m にフォーカスを設定するとか、すればええんじゃなかろうか
4.8.2 VS2010ではsetAttribute(Qt::WA_ShowWithoutActivating) で普通に行けてる気がする
QTextCodecが糞すぎるなぁ EUC-JP→Unicodeすらできやしない
>>803 > QTextCodecが糞すぎるなぁ
> EUC-JP→Unicodeすらできやしない
まじっすか?
なんか前もその話題上がってたな 確かにリファレンスには QTPLUGIN += qjpcodecs #include,QtPlugin> Q_IMPORT_PLUGIN(qjpcodecs) 書いたら行けるとだけ書いてるのにな
>>803 >EUC-JP→Unicodeすらできやしない
やってみた。できるよ。いい加減なことは言わないようにしよう。
>>805 ダイナミックプラグインでは不要。
リファレンスにスタティックプラグインの場合にそうすると書かれている。
荒れる前に、ためしに俺もやってみた 環境:WinXP QtCreator2.3.1 Qt4.7.4 とりあえず何も考えずに QTextCodec *c = QTextCodec::codecForName("EUC-JP"); 書いてしまった場合は、c=NULLってなるね QTextCodec::availableCodecs() ではEUC-JPがあるのに。 #include <QApplication> #include <QtPlugin> Q_IMPORT_PLUGIN(qjpcodecs) int main(int argc, char *argv[]) { QApplication app(argc, argv); ... return app.exec(); } QTPLUGIN +=qjpcodecs 以上を加えると、 cannot find -lqjpcodecsd ってエラーになった。 まぁ環境によって異なるんだろうけど、リファレンスに書いてあることだけを行ってもダメだね
Windows じゃ EUC_JP は扱えない
>>810 扱える。
release/debugが合ってないんじゃないか。
4.8.2 MSVC2010では QTextCodec *c = QTextCodec::codecForName("EUC-JP"); はNULLにならないみたい ここまでしかテストしてないけどw
QtをbuildするときにUNICODEモードにしていると予想
俺もWinXPだけど3年以上前からしたらば読み込むのにQTextCodec使い続けてるから出来ないはずはない コード読み直してみたけどリファレンス通りの事しかしてなかったよ
809と同じような環境だけど、たしかにNULLが返されるな
Windows用Q 4.8のバイナリライブラリで試してみた。 EUC-JPからUTF-8への変換が問題なくできている。
>>809 >以上を加えると、 cannot find -lqjpcodecsd
>ってエラーになった。
>まぁ環境によって異なるんだろうけど、リファレンスに書いてあることだけを行ってもダメだね
スタティックプラグインの場合にすることだからやっても的外れだよ。
つか、Qt自体が糞 Qt使うくらいならMFCの方がぜんぜん生産性は高い
MFCは直感的じゃないし、出来るのか出来ないのか調べる手間かけるなら 力ずくでガリガリ書いていったほうが早いレベル。 Qtはかなりの事が出来るんだけど、ちょっと込み入ったもの作ろうとすると 10個くらいのクラスと格闘することになる。 一緒に心中するつもりならQtの方がいいんだろうけど、外野での不安材料が 多くてとても心中する気になれないってところ。
qmakeってディレクトリと拡張子だけでソースコードとヘッダー取り込んでくれたりしないのかな。 いちいち名指しすんのメンドクセ。
チラシはチラウラで桶
だが待って欲しい。チラシの裏にチラシを書いたらそれはもう裏とは呼べないのではないだろうか。
QtCreator2.5からTODOが付いたお 使い方はソースのコメントにTODO:と書くだけ 以上チラウラ
>>823 両面に印刷されているチラシでも、大抵表と裏はあるよ。
まあ、裏に書いても読めないけど。
案外WP7端末売れたんだな
そうか? モトローラと同じ運命になりそうな
よっしゃー!ノキアは俺様が買った! QtはMITライセンスにするおっおっおっ!
馬鹿には無理
無理には馬鹿
道理が通れば馬鹿が引っ込む
834 :
デフォルトの名無しさん :2012/07/23(月) 09:57:57.06
Qtでリアルタイムなミニゲームを作りたいんので、 参考になるサイトを教えてください。 よろしくお願いします
Qtでやる意味がわからないので無理
>>836 エスパーじゃないから君が何をやりたいのかなんて我々にはわからんよ。
まず何故君がQtでやりたいと思ったかを書きなよ。
838 :
デフォルトの名無しさん :2012/07/23(月) 10:37:53.90
馬鹿には無理
コピペ荒らし
無理には馬鹿
>>835 入力をQtに任せるだけだろ。
処理のメインはOpenGLでいいだろうから無駄じゃないだろ。
文字列の表示だけでもなんらかのツールキット使わずに表示すんのは偉い面倒だぞ。
FTGL使えよ GUI要らないならGLFWがおすすめだ
ui_hogehoge.h ってどこにあるんですか? 読んでみたいんですけど
buildディレクトリの中にできてたな
>>842 GUIいるわハゲ
設定メニューとかめんどくせぇだろうがボケ。
>>844 ありがとうございます
読んでみます!!
Qt開発陣のやる気はすばらしいとおもうので、俺が金持ちだったらまじでかいたい。
経済面で保証されなくなってももそのやる気が続くだろうか。 今はただの金食い虫で崩壊へとまっしぐらな帰属先に何らの収益も寄与していない。
資本主義の豚どもに共産主義の素晴らしさわ知らしめるのがオプソの役割なのに 結局資本が無いと何もできないのかよ
同乗するなら金をくれ!
>>850 共産主義国じゃGPLは尽くないがしろにされてて
共産主義とは犬猿の仲だからな
Qtにのっかかってるソフトウェア結構多いしどこかしら買うんじゃないの
Adobeが買えば最高なんだけどネェー ごおgぇみたいに飼い殺ししないし
>>850 ほとんどのオープンソースは、企業が見返りを求めて投資や寄付をしているから成り立っているんだよ。
>>846 QtCreator使ってるなら
"ui_hogehoge.h" の上でCtrl押しながらマウスカーソル合わせれば対照へのリンクになる
クリックすれば飛べる
結構いろんな場所でこの機能は使える
知ってると便利
>>856 なんと!
便利ですね!ありがとうございます!
monoは再独立したあとVBから資本金あつめたみたいだし、 Qtも再独立した方が機動性いいのかもね。 そのなかでスマホ向けだけ有料とかうまく商用製品の競争優位を作れればいいんだけど。
本当に馬鹿なことをしたものだ。
どこで見たのか忘れたが、N9端末開発チームは独立したみたいだよ。 MeeGoとQtで生きていくって。スマートフォンにピッタリだって。
>>852 共産主義国なんてあったっけ?
単なる共産党独裁ならあるけど。
まさかキューバやベネズエラ?
世界で最も成功した共産主義国は日本だと言われているな
し・ゃ・か・い・し・ゅ・ぎ
共産主義・社会主義体制は短いスパンではうまくいくのだが、 数10年とたつと制度疲労をおこし崩壊すると言われている。 今がまさにその時?
まさに公務員労働組合天国
アカは認めたがらないけど、アカを名乗る国が軒並み腐敗するのは アカで地上の楽園が作れるなんて、机上の空論って証明なんだよ
反原発脱原発で集まってるアカ連中をみると アカはあほばっかりに見える
ごめん、自分が変なレスしたばかりにQt関係ない流れになっちまった。。。 ところでJavascriptのは最近どーなの?
Nokiaにウンコマーンアホがもっといてくれたら QtはNokiaの元でももっと発展できたろうになぁ
Trolltechのままの方が発展して、iOSやAndroidをサポートしていたろうに。
>>870 iosサポートされても静的リンクしなきゃならんし
AndroidのAPKにまとめるのも静的リンク扱いだっけ 汚染されるんじゃ誰も使わないな
>>872 dalvikコードの動的リンクができない話と誤解してるだろ。
それにandroid版qtは別パッケージ配信。
necessitasの仕組みはよくできてて合理的だけど 複雑だからアプリに組み込んだときに一般のユーザーがついてこないんじゃないかと思う。 アプリの説明欄で簡潔に説明するのは難しい。 変なインストーラが起動した★☆☆☆☆ってなりそう。
>>873 別パッケージだろうと動的リンクとみなされないからclasspath exceptionなんてものがあるんじゃねーの?
>>875 あなたの世界のandroidの開発環境では
ネイティブコードもdalvikコードに変換されるようだが、普通は違うんだよ。普通は。
おおこわいこわい
>>875 根本的な認識がズレてる。
外部ライブラリとしてjarを利用してapk作成する場合にjar内のコードがアプリ本体コードにマージされる。
それを動的リンクできないと言っているだけ。
もちろん.soはdalvikコードと静的リンクできません。
わかった?
おおこわいこわい
デマ流しておいて偉そうだなコイツw ios版Qtって、公式とは関係ないって認識でok?Qtぽい何か的な
何がこわいんだ?
饅頭
次はBSDライセンスが怖いです
QtのScrollAreaって、スクロールするたびにredraw呼び出されるので正常? 1度全部描画(表示領域より大きい領域)したらうまいことbitbltしてくれるものだと思ってたのに。
>>884 > 1度全部描画(表示領域より大きい領域)したらうまいことbitbltしてくれるものだと思ってたのに。
viewport() の部分だけ描画するのが作法だと思ってたよ
なんだよscrollareaってスクロールバーと連動できるってだけで スクロール描画は自前かい。
自前じゃなかったら、縦横10000pxみたいな とても一度に描画できないサイズの奴コントロールできねえだろ
VBer とかだろ、放置しなよ。
↑ 典型的な勘違い野郎
viewportって言ってるんだから、openglみたいに 描画部分だけうまくクリッピングしてくれるのかと思ったんだよ。 viewportじゃなくって、ただのviewだな。
>>883 BSDライセンスになったら開発が低迷するから怖い。
openglだって毎フレーム自分で描画しなおすんだから事情は同じじゃん
openglだと頂点データ全部ぶち込んでクリッピングはopenglの仕事 データのでかいゲームマップとかだと事情は変わるかもしれんが
デフォルトでは適当にいい感じにクリップしてblitして、
>>887 みたいな奴だけオーバーライドして自前で最適な実装するようになってても罰は当たらないよな。
scrollareaの中身をQWidgetからQLabelに変更したら 自動でスクロールバーが出て、期待通りにスクロール出来たぞ。 pixmapに自前paintしてsetPixmap。 やっぱりpaintEventをごそごそする必要ないじゃないか。 なんだけど、今回の場合pixmapで問題発生。pixmapのサイズ制限 (どうもピクセル数はsigned shortの範囲でないと駄目らしい) に引っかかってしまった。 結局振り出しに戻る。
夏休み始まったな
>>896 ピックスマップのサイズはプラットフォーム依存で、大きなものは分割して処理。
>>897 に言われなければ夏休みが終わるまで気付かないところだったよ、ありがとう。
ニートは毎日夏休み
じゃあ俺は冬休みにする
昔の2chは今のスラドなみの雰囲気はあったけどな 最近は・・・というかここ数年頭おかしい奴が、メチャクチャにしている、死ねばいいのに。
今のスラド並って最悪じゃん
上にも下にも裾野が広がってる証拠で結構なこと
スラドってマカーがジョブズマンセーしてるだけの気持ち悪いサイトじゃん
2chの質はさておき、代替品としてスラドだけはないわ。
2ch発祥のソフトは数多くあるが、スラド発祥のソフトって何かあったっけ?
slashcode
スラドの話うざいやめれ --- 如何なる内容であってもスラド民のレスはNGします
スレから内容が脱線しすぎるのは確かによくないが idも無い板でどうngにするんだ? 1レスずつ読んでからngにするのか? 馬鹿としか思えん。 だいたいなんでアピールしたんだ?
如何なる内容であろうとACでの書き込みは一切無視します ってやつのパロディなんだろ
>>913 それは中身みなくても判別できるからなぁ
ガワだけもってきてパロディとはいえないよな
だからいちいちムキになるなよ・・・w スラドのノリを2chに持ち込まないでくあさいwww
913のやつもそうだけど スラドってなんでいちいち書き込みの最後に ゴミみたいな文章付けて投稿するんだろう
モデ対象にされずに自己主張 +後から消すのも変えるのも自由自在 それで「ACは卑怯でうんぬん〜」するところまでがテンプレ。 てかお前らなんでそんなにスラド好きなんだ。
単にQtの話題が尽きたんだろ 誰かネタあったら投下してやれ
キューティーハニー
外人って本文よりでかい署名好きだよな
Rubyのバインディングとかあるの?
崩壊そして新天地へ。
Nokiaから売却されるなら朗報だよな。
どこに売却されるかによるんじゃないかな
売った方も買った方も経営者は失格。
実質デスクトップ限定なGUIツールキットなんてビジネスとしてはあまりにも先行き真っ暗だよなー。
お先真っ暗なのは君の情報収集能力じゃね? 組み込み機器でも使用例あるし。
今は組み込みで使われている方が多い。
Samsungの冷蔵庫にも使われてるそうだ。 タッチパネルで「今日のレシピ」とか見られるらしい。
C++ベースだからな 組み込みでバリバリ使ってます
気持ち悪いのが多いと思ったらここは組み込み系の巣か。
組み込み以外のC++なんて、日本じゃ仕事ないだろ
例のこの先真っ暗君だろ、温かく見守ってやろうよ。
>>935 C++厨で組み込み厨でスラド民の三重苦を抱えた人達に酷い事言うもんじゃない
冷蔵庫なんかだとそれこそAndroidでもWindows Embeddedでもよさそうだが。 「Qtは載るけどAndroidはちょっと無理」みたいな環境ってやたら狭くて狭くなる一方じゃないか?
>>936 あるよ。
俺は装置制御アプリ作ってる。
装置制御って組み込みの仲間に入れられてそう。
PCで制御してるから組み込みじゃないんだけどね
制御系が多いんじゃないの。レジとか情報端末は普通にwindowsだろうし。
冷蔵庫はTRON
ホストにつながるような大型プリンタで、Unix WS で制御しているとかもあったし。
お前らOpenGLスレに迷惑かけるなよ
Qtスレにまでわざわざ来るな
キュリオシティはVxWorks
組み込みや制御系にも居場所はなさそうだな。 あとはAutoDeskに買ってもらえるのに望みをかけるぐらいか。あそこが買ってもオープン化には興味なさそうだけど。
なんで居場所がないことになってんだよ ソースも公開されてるしバリバリ使わせて貰ってますがな
ネガキャンしたくて仕方ないんだろ
OpenGLスレにわざわざ出張してステマする奴らに言われたくないだろうな。
見えない敵より、見える敵と戦おう
自分と向き合わないとな。
まず鏡か
QAbstractListModelの実装の仕方が良くわからないです。正しい実装の仕方はどうなんでしょうか。 クラスに一行データを追加する前と後で beginInsertRows(QModelIndex(), 0, 0); // 配列にデータを追加 endInsertRows(); のようにシグナルをエミットするようにしたのですが、ビューに空のデータが追加されたようになってしまいます。 ビューをクリックしてデータを編集したときはちゃんと更新されます。 この2つのメソッドではなくreset()を使うと動きますが、やっちゃいけない方法に思えます。
それでいいよ
>>958 reset()は不要。rowCount()、data()、flags()、setData()などのコードを見直してみて。
961 :
958 :2012/08/08(水) 21:39:11.59
>>960 確かにsetData(),data()あたりのコードが間違っていたようです
ちゃんと表示されるようになりました。ありがとうございました
前から思ってたんだけど、QAbstractItemModelの時点で 行の挿入やら削除のメソッドがpublicに定義されてるのって、なんか気持ち悪くね? 個人的には、こういうメソッドをユーザに呼んでもらっても困るようなモデルが多いんだけど
>>962 横からだからよく分かんないけど、理想的にはどうだったらいいの?
このメソッドを使うとあなたに呪いがかかる。決して使ってはならない。
>個人的には、こういうメソッドをユーザに呼んでもらっても困るようなモデルが多いんだけど なんでそういうモデル作ったの? 作りが悪くね?
気持ち悪くない。困らない。作りは悪くない。
DigiaがNokiaからQtを取得した。
Digia plans to quickly enable Qt on Android, iOS and Windows 8 platforms 正しい流れだ。
Digiaってどんな企業?
Nokiaにべったりだった企業。
そして、Symbianを放り出されて裏切られた。
つまりどういうことだってばよ?
NokiaがダメにしたQtがまともになるかもしれないということだよ。
QMLについては何も触れられてないけど、どうなるの?
モバイルに力いれていくなら、QMLはますます重視されて QWidgetsは軽視されるだろう
Windows8とも書いてあるし、まぁそこまで悲観せんでもいいんでない
Win8っていってもmetroスタイルのことだけで デスクトップはアウトオブ眼中じゃね
つまり、Didia が iOS, Android, Win8 で早急に Qt が動くようにするというのは、 QML が動作するようにするってこと?
QMLが動くってことはそのバックエンドのC++も動かないと不可能
>>980 QMLは動作はしているけれど、まだまだ不十分なのをちゃんと動くようにして、
サポートプラットフォームにするということだよ。
ウィジェットも動いているけれど、後回しでコンボボックスとかは動きが変でまだ使い物にならない、そして優先度は低い。
Titaniumみたいになるんかなぁ
出来が中途半端で動作がトロいんですね。わかります
Qt5ってどうなの?
Widgetを複数配置するときWidget1は幅固定、Widget2は残りの幅全てを使う ってな事がしたいんですが、一番完結に実装するおすすめの方法ありますかね? 他の環境みたいにちまち調整するのは面倒です
え? ネタ?
サイズポリシーすら理解できないならウィンドウサイズ取得して自分で設定すれば?
>>986 Qt CreatorかQt Designer使うの? それともコード手書き?
>>989 手書きです。QVBoxLayoutみたいな感じで
さくっと書けないものかと思ってます。
QHBoxLayout使えよ
ちまちま調整って具体的になんのことを言ってるんだ? レイアウトに入れてサイズポリシー設定するだけだろうに
>>991 >>993 すみません。サイズポリシー設定だけでできました。
簡単な質問で申し訳ありません。
玉フィンフィン
もうSymbianはダメだな
まだ大丈夫だったのか?
Qt 5ではSymbianのコードは削除されている。
Qtは衰退しました
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。