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


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

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



1 名前:デフォルトの名無しさん [2012/02/18(土) 11:01:17.97 ]
Qt(キュート)は C++ ベースのフレームワーク&RAD開発環境です。

ライブラリの機能は、フォーム、ボタンなどの各種ウィジェットからネットワーク、マルチスレッド、
グラフィックス(OpenGL)や各種コンテナ、XMLパーサー、組み込み JavaScript など、非常に多岐に渡ります。
公式の統合開発環境「Qt Creator IDE」を使えば、クロスプラットフォーム対応のRAD開発が可能です。
また、EclipseやVisual Studio上で開発したい人のためのアドインも用意されています。

■主な対応プラットフォーム(デスクトップ用途の場合)

Windows XP, Vista, 7
Mac OS X 10.4, 10.5, 10.6
Linux

■ライセンス

・オープンソース版(Open-source version)
 LGPL 2.1 または GPL 3.0 のうちどちらかを利用者が選べます。
 LGPL を選んだ場合はソースコード非公開のままでの商用利用が可能です(いくつか制限あり)。
 ※正確には通常「LGPL+商用利用向きの例外条項」を選ぶことにな7ります(Qtインストール先の「LGPL_EXCEPTION.txt」を参照)。
  ちなみにGPLでも商用利用が不可能というわけではありません、念のため。
・商用版(Commercial version)
 こっちはNokia社か日本の代理店(SRA社)とライセンス契約(年間30万くらい?)を結んで使います

■Qt を使って作られたソフト例

KDE、Adobe Photoshop Elements、Google Earth、Skype、DAZ Studio など
■前スレ
【RAD統合環境】 Qt 総合スレ 12 【Win/Mac/Linux】
toro.2ch.net/test/read.cgi/tech/1313727889/

47 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 00:13:05.06 ]
QFileDialog::DontUseNativeDialog
使ったことはないが。

48 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 01:08:16.03 ]
オブジェクト指向なライブラリは重い気がする

49 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 01:32:06.02 ]
キモオタニート

50 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 01:48:15.59 ]
>>45-46
ああ、そういうことか。
わざわざそっちの方を使う人もいるのかな?

51 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 02:16:34.05 ]
がっつりカスタマイズしたいときとか、クロスプラットフォームなソフトだと便利なこともある

52 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 03:13:50.59 ]
ソフトの挙動がOSごとに異なるのはサポートが面倒な場合があるかもね

53 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 04:08:02.24 ]
FireAlpacaが話題だねぇ

54 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 05:39:46.19 ]
こんなところまでステマか

55 名前:41 mailto:sage [2012/02/24(金) 06:06:34.62 ]
>>44,>>50
ドキュメントの読み方が浅いよ。>>47が正解。
QFileDialog::getOpenFileName()とかのスタティック関数でも,最後の引数
(Options)に指定できる。

だいたいさぁ,やってみたことあるから書いてるに決まってるじゃないか。
良く調べもせずに噛み付いて恥ずかしくないか?



56 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 08:48:34.99 ]
C++でプログラム書くのを覚えるとCでプログラム書くのは無理
Cを読むくらいならできるけど、Cで書くなんてバカらしくてやってらんない


57 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 08:50:08.30 ]
How To Become A Hacker
cruel.org/freeware/hacker.html

もしコンピュータ言語をなにも知らないなら、まず Python から始めることを
おすすめします。設計がきれいだし、ドキュメントもしっかりしているし、
初心者にもそこそことっつきやすくできています。でも入門言語として最適でも、
おもちゃではありません。強力で柔軟で、大きなプロジェクトにもじゅうぶん
対応しています。

Java もプログラミングを学ぶにはよい言語です。 Python よりはむずかしい
ですが、できるコードは Python より高速です。二番目の言語としてはとても
すぐれていると思います。

本気でプログラミングをするなら、C を勉強するしかありません。これはUnix の
中核となる言語です。C++ は C と密接な関係にあります。片方を知っていれば、
もう片方を学ぶのはそんなにむずかしくありません。が、どっちも真っ先に
勉強しようとするのには向いた代物ではありません。


58 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 10:19:20.15 ]
c++なんてどこまでいっても便利でカオスなCじゃん
Cでキッチリかけないやつなんてわかってないだけ

59 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 12:19:54.39 ]
C++使わないでCでプログラムをするのは
足を使わないで自転車に乗るようなもん
出来ないことはないが馬鹿らしくてやってられない

60 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 22:36:32.70 ]
CとC++の話は別にどうでもいいですん

61 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 01:07:15.57 ]
すん

62 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 01:11:27.53 ]
>>41
ずいぶん偉そうな言葉遣いだな。
プログラムの前に日本語を覚えなw

63 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 02:02:32.48 ]
CとC++のどっちがいいかなんて無意味。
目的のためなら利用できるものは何でも利用するべきなんじゃないのかな。

でも、はっきり言って、Cでまともなプログラムが書けない人は
やっぱりC++でもまともなプログラムを書いてないよね。
危なっかしいプログラムを平気で書いてる。

64 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 02:04:13.52 ]
ってか、Qtは大抵の人が安全に使えるから人気があるんだろうね。
そのぶん、パフォーマンスが落ちてるような気がするけど。

65 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 09:35:19.25 ]
>>62
どこが? で、本題はどうしたの?



66 名前:名無しさん [2012/02/26(日) 11:58:23.71 ]
検索エンジンも業務効率の改善にいそいでいる。

67 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 12:38:25.94 ]
>>31, >>32, >>33
同じく。QtFileDialogのスタティック関数を使ってるけど、最初使うとき体感できるほど遅いね。
dllのロードに時間がかかってるんだろうな。


68 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 21:56:56.07 ]
ウインドウを不活性にして読み込み中・・・みたいなダイアログ?を表示したいんですけどどうしたらいいでしょうか

69 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 23:55:04.69 ]
adobeはflashの役割をhtml5にとられるだろうけど、
そのうち、photoshopをarchemyで実装しだすと思う。
javaもc#もクロスプラットフォームなRIAとしては今一な感があるし、
コアなロジックなんかはc++で書いた方がよほどコードをつかいまわせる。
余ったflash技術者にプレゼンテーション層をまかせるとなれば、
今後はqtの採用が減るんじゃないだろうか

70 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 04:07:43.01 ]
なんか最近見るスレ見るスレで
フォトショ関係のオナニー長レス見かけるんだけど…


71 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 23:43:05.67 ]
>>69
Qt 5の開発が遅れ気味で、安定するのにも時間がかかるだろうから、新機能は当分使えない。
Qt 4の改良は止めてしまっていて、同じく目新しいことはない。
Qtが停滞している間に、他のものを使うようになる。

72 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 01:28:24.99 ]
qt5はコアな部分から最適化のためにかなりいじってるみたいね

73 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 01:29:34.46 ]
他のものの候補ってナニ?GTK位しか知らないんだが

74 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 18:59:49.51 ]
どーせいつものアンチNokiaの粘着だろ

75 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:53:50.90 ]
>>68
だれかしりませんか・・・



76 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 23:12:23.00 ]
>>75
要するにボタンのないモーダルダイアログを表示して、プログラムのコードで閉じたいって
ことだよね?

それならQDialog::open()を使えば良い。この関数はダイアログをモーダル表示して
すぐにリターンする。閉じる時はclose()で閉じる。

77 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 23:40:02.48 ]
>>76
ありがとうございます
やってみます

78 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 10:30:42.57 ]
VS11のExpressEditionはWin8専用で、Metroアプリしかビルドできないみたいだぞ
競合IDEメーカーがいなくなったからPro以上を売りたいのかも知れないが
Qt Creatorの存在をお忘れだったようだな!

79 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 13:35:41.65 ]
いいかげん板違い。マ板にでも行って分かったようなこと語っててくれ

80 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 23:12:23.11 ]
Nokiaの腰巾着よりまともだな。

81 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 12:41:07.43 ]
ソースから特にオプションをつけないでビルドしたら30GBになってしもた
気をつけてね

82 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 12:57:09.69 ]
サイズを小さくするには
どんなオプション付けるん?

83 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 15:43:00.32 ]
QT初心者だが、
qmake -project
qmake
make
ってやったら don't know how to make 'FORCE' と出たんだが。

84 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 16:38:25.08 ]
qbs の紹介
labs.qt.nokia.co.jp/2012/03/03/introducing-qbs.html
何年もの間、qmake とは愛憎の入り混じった関係を育んできました。
ちゃんと仕事はしてくれるのですが、うまく行かないこともあり、
多くの人がメンテナンスは不可能だと考えています。

85 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 01:56:06.39 ]
noDebug



86 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 02:14:48.29 ]
>>82
pdbファイルがでかいので-nomake samplesなのかも

87 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 23:44:22.01 ]
Qt初心者です。
resizeEventに関して質問があります。
QPlainTextEditにでかいファイルを読み込ませた状態で
「MainWindowのサイズを変更したことによる
リサイズイベント」が発生すると、非常に処理が重いです。

- イベントの発行数を減らす
- qsplitの子ウィジェット感のサイズ変更のように、
サイズ変更が終了した時だけ描画する

などで対処したいのですが、何か良い方法はありませんか。
現在の第一候補はQPlainTextEditの resizeEvent のオーバーライドで、
イベント発行数を1/5ぐらいにする方法です。
(親クラスのリサイズの呼び出し回数を減らす)
ただ、問題もありそうなので、もっと良い方法を探しています。

アドバイスいただけないでしょうか。
よろしくお願いします。

88 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 08:10:51.62 ]
>>87
> QPlainTextEditにでかいファイルを読み込ませた状態で
> 「MainWindowのサイズを変更したことによる
> リサイズイベント」が発生すると、非常に処理が重いです。
リサイズイベントハンドラのソースは以下のようになっています。
if (e->oldSize().width() != e->size().width())
d->relayoutDocument();
たぶん、relayoutDocument() で右端で折り返す処理を行なっているんだけど、
行数が多いとこれに処理時間がかかってしまうんだと思う。

表示されている部分だけをレイアウト処理して、それ以外はマルチスレッド化
するといいとは思うけど、対処はかなり難しいと思う。


89 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 15:05:57.99 ]
初心者質問ですんません
エンターを押下したら特定のプッシュボタンをクリックしたのと同じ効果となる方法ってありますか?

90 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 15:24:06.43 ]
>>89
> エンターを押下したら特定のプッシュボタンをクリックしたのと同じ効果となる方法ってありますか?
keyEvent() で エンター かどうかを判定し、そうなら プッシュボタンの clicked() シグナルを
エミットすればいいんじゃね?

91 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 17:48:41.87 ]
>>90
clicked()シグナルのエミットのみでは、クリックしたのと同じ効果にはならないし、
エンターの判定には、どこにフォーカスがあるかどうかも考慮する必要があります。

>>89
プッシュボタンのanimateClick()を呼べばクリックしたのと同じことになります。
例えば、どこでもよいからエンターを押したのを判断するならば、QApplicationにイベントフィルターを設定して、
エンター押下を判断して、特定のボタンに対して、animateClick()を呼べばよいでしょう。

92 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 09:25:07.05 ]
>>89
QDialogだけかもしれないけど、QPushButtonのdefaultをtrueにすれば良さそう。

93 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 19:39:54.77 ]
>>92
QLineEditなどがあったらダメでしょう。

94 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 21:33:35.28 ]
Qtwebkitの開発停滞してんなあ

95 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 23:06:48.54 ]
ちょっと質問。
QListとかQHashなどのコンテナってスレッドセーフにできてるんですか?
自分の作ったものじゃないウィジェッドを使ってプログラムを作ってる最中なんですが、
スロットの中で、QListのメンバ変数にデータを追加する時に、
アクセスエラーと言われて落ちてしまいます。



96 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 23:24:15.12 ]
基本的にドキュメントにスレッドセーフってわざわざ書いてないものについては
自動で排他制御したりはしてくれないので
別スレッドからインスタンスに触るときは、QMutexLockerなりなんなりで保護しないとダメです

97 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 00:14:47.45 ]
ありがとうございます。なるほど・・・。
QMutexLockerってものがあったんですね。


98 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 03:28:15.66 ]
オープンソースのものをとりあえずコンパイルしてみたいという段階の初心者なのですが、

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 mailto:sage [2012/03/08(木) 05:21:04.47 ]
qt sdkでないqtを入れてみたら先に進みました
失礼しました

100 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 07:55:37.66 ]
ありがとう

101 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 11:20:27.25 ]
Designerへのプラグインの登録についての質問です。

Linuxで自分の作成したプラグインをDesignerで使用するには
/usr/lib/qt4/plugins/designerに放りこめば使えるようになりました。

ただこれにはroot権限が要る為、
一般ユーザがそのユーザのみで使用する場合は
どのようにDesignerにpluginを登録すれば良いでしょうか。

何かパスを通すなどで解決するのでしょうか。

102 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 18:42:51.60 ]
QStringList QCoreApplication::libraryPaths()
{
const QByteArray libPathEnv = qgetenv("QT_PLUGIN_PATH");

とあるんで、試してないが、環境変数のQT_PLUGIN_PATHにパス追加しておけばいける


103 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 15:04:24.63 ]
>>88
アドバイスありがとうございました。
とりあえず「折り返しなし」にしたら問題がマシになりました。

調査していてわかったのですが、どうやら Mac かつ plastiqueStyle で
QTreeWidget が重いというバグに関わっているようでした。
描画スタイルをMacやMotifにしたら、だいぶ早くなりました。


104 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 15:06:49.24 ]
QLabelにあるテキストを ドラッグで範囲指定して、コピーできないもんですかね。
ぐぐったら継承して対応するというような意見があったのですが、
もっといい方法がありそうな気がします。。。。
なにか知っていらっしゃいますか。

105 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 16:55:47.96 ]
>>104
これで出来るんじゃないの?
qt-project.org/doc/qt-4.8/qt.html#TextInteractionFlag-enum



106 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 16:56:06.52 ]
>>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の両方で試しました
規則性はないような感じです。

108 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 17:07:09.70 ]
これ?
www.qtcentre.org/threads/4625-WCHAR-to-QString-giving-error-in-vs2005
stackoverflow.com/questions/5625884/conversion-of-stdwstring-to-qstring-throws-linker-error

> Edit your Visual Studio project settings and under C/C++ -> Language
> set the option Treat wchar_t was Built-in Type to No.

109 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 17:10:03.59 ]
>>107
違うバージョンのQtCore4.dllがロードされているんじゃないか

110 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 18:24:01.50 ]
>>102
返事が遅れてすみません。

~/qp/myplugin/myplugin.pro というプラグインが在る所
$ env QT_PLUGIN_PATH=~/qp/myplugin/plugin qtcreator
と起動することで確かにプラグインが追加されました。
ありがとうございました。

111 名前:110 mailto:sage [2012/03/11(日) 18:26:01.35 ]
絶対パスだと長くなるので相対パスで書いたのですが、
相対パスでは動きませんでした。
失礼しました。

112 名前:108 [2012/03/11(日) 19:46:07.03 ]
>>109
QtCore4.dllは1つしかないのでそれはありません

結局Qtのコンパイルを、動作しないPCの環境で行ってからアプリケーションを
再コンパイルして解決しましたかが、釈然としません。

113 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 20:26:31.31 ]
>>108
これだとコンパイル時にわかるだろうね

2005と2008のQtCore4.dllをごっちゃにしてるんじゃないかな

114 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 20:29:43.38 ]
gccとかmingw のバージョン違いでもおかしくなることあるよ

115 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 23:57:23.00 ]
win7の32bitで動いた場所とディレクトリから、64bit(別PCでコンパイル)のdllを取ってきても動かなかったりしたなぁ。
えらい悩んだが、Qt Creator で動いたのなら、どこかに必要な dll は必ずあるはず。



116 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 17:18:33.80 ]
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を呼び出した場合はエラーは起こりませんが、テキストは表示されません

解決方法が思い当たる方、同じようなエラーが起こる方、レスをいただけると嬉しいです。

117 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 00:11:48.77 ]
QtwebkitでQtTestbrowserをもとに簡単なブラウザようなものを作成したのですが
どうにも自分のwin環境だと日本語入力が正常に行えません
調べてもissueも出てないし日本語圏で誰も問題にしていないので自分の環境だけなのかな〜と思ったのですが
自分以外の環境でも問題再現するようでしたらQtwebkit Projectにissue投げたいのですがいかがでしょうか?

118 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 00:27:25.29 ]
前にテキストエリアとかで漢字変換すると
WebKitが死んでしまうって話しは出てたな

119 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 00:42:40.04 ]
メーリス見たところWebkitが落ちるだか画面暗転?するバグは直ってるっぽいですね
Aroraあたりのqtwebkitがっつり使ってるブラウザもテキストエリアでキャレットが動かないなどの不具合ありました
メーリングリストに投げた方がいいんですかね……?


120 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 03:53:05.89 ]
4.7.3で問題なく動作していたソフトが4.8.0では正常に動作しなくなりました。
色々調べてQNetworkAccessManager::postの実行時にQNetworkReply::UnknownNetworkErrorが起きていることが分かったのですが、
QNetworkReply::UnknownNetworkErrorってどんな原因が考えられるんでしょうか?

ちなみに、QNetworkAccessManager::post実行後にネットワークアクセスは発生していません。
そしてエラーを無視して同じ引数で再度postを実行すると問題なく動作します。

121 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 09:36:56.37 ]
色々と調べたところQtwebkitの処理周りのバグはWebkit Bugzillaになげるべきらしいですね…
自分はレポートはできてもリテストできる環境にないのでどなたか投げといてくれると嬉しいです

122 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 22:34:38.00 ]
うちの環境では(XPで4.7.4)は特に問題なかった

123 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 23:23:54.09 ]
アプリケーションをインストールした後、PCで初めて起動する時にだけ、
特定の処理を行いたいと思ってます。
Qtでの定番のやり方ってありますか?

やろうと思えば、いくらでもやり方はあると思いますが、
Qtでいい方法が用意されているのならそれを使おうかな、と。


124 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 23:44:15.51 ]
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はインストール済みだし何がおかしいんでしょうか?

125 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 00:06:14.67 ]
>>122
ありがとうございます
Vistaと7、Qt4.8で再現するバグですのでその旨もちゃんとBugzillaに書いておきます。



126 名前:120 mailto:sage [2012/03/15(木) 22:47:28.94 ]
原因が分かりました。
4.8.0ではQHttpNetworkConnectionChannel::allDone内のエラー処理がコメントアウトされていました。
その影響で4.7.3では隠れていた不具合が表に出たようです。

恐らくですが、Connection: closeを指定していても、サーバがレスポンスの末尾に不要なデータを付け足して送ってくると、使い終わったソケットの終了処理が行われないようです。
そして次に同じホストに対してpostを実行すると、この使い終わったソケットを再接続せずに再利用してしまい、書き込みエラーが発生します。
該当部分のコメントによると既知の問題みたいですが、一応報告だけ。

127 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 22:55:31.54 ]
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 することに問題があるのではないかと推測しています。
なにかよい対処法があったら、アドバイスいただけないでしょうか。

よろしくお願いします。

128 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 23:08:44.82 ]
すいません、127 です。
baseWidget->remove(w);
w->deleteLater();
としたら、解決しました。
オブジェクトの開放のタイミングとか検証してから質問するべきでした。

お騒がせしました。

129 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 16:23:57.27 ]
QThreadの使い方でこういうの見つけたんだけど、いまいちよく分からん。

vivi.dyndns.org/tech/Qt/QThread.html

クラスをthreadに割り当てて、start()では実際のスレッド動作は始まらず、
クラスメンバー関数を呼び出した時点でスレッドとして動作が始まるって理解でいいの?

130 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 16:55:29.03 ]
startでスレッドが始まってデフォルトのrunが呼び出されて、
デフォルトのrunが呼び出されるとexecが呼び出されて、
execが呼び出されるとイベントループに入る
だと思う

131 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 19:06:56.95 ]
>>129
> クラスをthreadに割り当てて、start()では実際のスレッド動作は始まらず、
> クラスメンバー関数を呼び出した時点でスレッドとして動作が始まるって理解でいいの?
いや違う。
start() でスレッドの動作が始まり、イベントループが開始される。
スロットがシグナル経由で呼び出されると、スレッド側のコンテキストで
処理されるということ
スレッド間のスロットコールは内部ではイベントとして処理される


132 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 19:37:20.96 ]
>>130-131
うーん、ちょっとデバッガで追っかけてみたけど(VC++環境)
start()ではSUSPENDでスレッド起動してるだけみたいだけど。

それに呼び出してもないのにexec()が勝手に動いちゃ駄目じゃない?

133 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 19:49:10.15 ]
ソース嫁
qt.gitorious.org/qt/qtbase/blobs/master/src/corelib/thread/qthread.cpp

134 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 19:55:24.48 ]
>>132
> それに呼び出してもないのにexec()が勝手に動いちゃ駄目じゃない?
なんで、exec() が動いちゃ駄目なの?
exec() が何をするものか分かってる?

135 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 19:56:06.03 ]
ソース読まなくてもQThreadのリファレンスに書いてあったと思うけど



136 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:11:30.34 ]
>>134
run()で完結する処理ならexec()必要ないし。必要のないものが勝手に動くと駄目だろ。

ざーと見てみたけど、signal受けるとQThreadのイベントハンドラが1回だけ呼び出されて
対応する処理に移動するって感じがするんだけど。
イベントループがずっと動いてるって確証は今のところ見当たらない。

137 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:14:09.54 ]
念のため言っておくけど、>>129のmoveToThreadやinvokeMethod使った処理な。

138 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:25:32.25 ]
なんで公式のリファレンスを読まないの?
分からないことがあったら一番最初にすることでしょ?

139 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:32:13.43 ]
>>136
とりあえず、ここを読んでおけ
labs.qt.nokia.com/2010/06/17/youre-doing-it-wrong/

140 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:40:35.67 ]
リファレンス読めなくてもソースなら読めるだろ

141 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 05:47:19.10 ]
ソース嫁ソース嫁ってしつこくてうざいよ
リファレンス読まずにソース読むなんて、仕事がなくて暇なヤツのすること

142 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 08:15:21.78 ]
やれやれ
ここもそろそろIDが必要になったか

143 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 08:45:34.92 ]
リファレンス読んでもわからないからソース読みます

144 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 09:41:08.16 ]
自演乙。やっぱり最低でもID出なきゃダメだね。

145 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 15:47:30.88 ]
Qtはちゃんと資本が入ってるお陰で、ちゃんとしたドキュメントが整備されてるし
よくあるオプソライブラリみたくソースから入る必要もないだろ



146 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 16:22:39.71 ]
リファレンス読んでも分からないときにソース読むのは正しい
リファレンス読めば分かるのにソース読むのはマヌケ

147 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 16:28:36.94 ]
馬鹿には無理






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

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

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