【RAD統合環境】 Qt 総合スレ 9 【Win/Mac/Linux】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/12/14(火) 22:42:28ライブラリの機能は、フォーム、ボタンなどの各種ウィジェットからネットワーク、マルチスレッド、
グラフィックス(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 総合スレ 8 【Win/Mac/Linux】
http://hibari.2ch.net/test/read.cgi/tech/1280950209
0002デフォルトの名無しさん
2010/12/14(火) 22:43:28・Qt Development Frameworks (Nokia社のQt公式サイト)
http://qt.nokia.com/title-jp
・SRA社(日本の代理店)の日本語で読める Qt 関連ドキュメント
http://www.sra.co.jp/qt/relation/index.html
・Qt Users Forum Japan
http://qtusersforum.s2.zmx.jp/forum/index.php
■ライセンス関連まとめ
各ライセンスでの自作アプリのソース公開/頒布
Qtのライセンス アプリのライセンス Qtの頒布/(変更部分のソース公開)
GPL GPL(ソース公開必須) 必須
LGPL 任意(ソース公開不要) 必須
商用 任意(ソース公開不要) 不要
*: LGPLは動的リンク時
実際には他にも条件(リバースエンジニアリング関係とか)あるので、
きちんとライセンスの条文を読むこと。
0003デフォルトの名無しさん
2010/12/14(火) 22:44:18・プロジェクトのパスに日本語を入れちゃダメ
・日本語のソースコードは、MinGW版ならUTF-8、VC版ならSystem(Shift-JIS)
プロジェクト作成後に「プロジェクト」タブの「エディタの設定」→「デフォルトの文字コード」を設定すると幸せになれる
・デバッグ出力などが文字化けする場合、プログラムの最初で文字コード変換設定をする
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8")); //ソースの文字コードを指定("utf-8"や"Shift-JIS")
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); //同上
qDebug() << "うまく表示できた?";
・MinGW版の配布時は mingwm10.dll も一緒に入れておく(public domain で配布上の制限はない)
■インストール方法:MinGW版Qt & Qt Creator
(1)「Qt SDK for Windows」をインストールすればOK
http://qt.nokia.com/downloads/sdk-windows-cpp
■インストール方法:VisualC++版Qt & Qt Creator
MinGW版との違い:Phononが利用可能。VC版の方がいろいろ速いらしい
(1)「Microsoft Visual C++ 2008」(Express Edition 以上) をインストール
(2)「Microsoft Debugging Tools」をインストール(※Qt Creator上でデバッグする時に必要)
http://www.microsoft.com/japan/whdc/devtools/debugging/installx86.mspx
(3)「Qt libraries for WIndows(VS 2008)」をインストール
http://qt.nokia.com/downloads/windows-cpp-vs2008
(4)「Qt Creator Binary for Windows」をインストール
http://qt.nokia.com/downloads/qt-creator-binary-for-windows
(5)環境変数PATHを設定(もともと入ってたパス;Qtインストールパス\bin)
(6)Qt Creator を起動して、「ツール」→「オプション」メニューで初期設定
「Qt4」→「Qt Versions」を開いて自動検出された「PATH に含まれる Qt」をクリックし「MSVC バージョン」を 9.0 にする
「デバッグヘルパ」が×印になっていれば「リビルド」ボタンをクリックしてリビルド(※)する
(※)もし失敗したら「プロジェクト」→「ビルドして実行」→「nmake の代わりに jom を使用する」のチェックを外してみる
0004デフォルトの名無しさん
2010/12/14(火) 22:46:23Qt Creator を日本語化するプロジェクトです(非公式)
http://qt-creator-jp.sourceforge.jp/
■Python バインディング
PyQt4(GPL。定番)
http://www.riverbankcomputing.co.uk/software/pyqt/intro
PySide(LGPL。Win版はまだ無いけど今後に期待)
http://www.pyside.org/
それでは、はりきってどうぞ!
0005デフォルトの名無しさん
2010/12/14(火) 23:06:00乙カレーション
0006デフォルトの名無しさん
2010/12/14(火) 23:32:38QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); //ソースの文字コードを指定("utf-8"や"Shift-JIS")
0007デフォルトの名無しさん
2010/12/14(火) 23:36:10言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0008デフォルトの名無しさん
2010/12/14(火) 23:37:54誤解無いように言っとくとLGPLの静的リンクでもソース公開は必須では無いよ
0009デフォルトの名無しさん
2010/12/15(水) 07:06:270010デフォルトの名無しさん
2010/12/15(水) 11:50:14静的リンクをstatic linkingとする(要するにexeの中に入れる)なら、
LGPLのライブラリの使用であっても
プログラム全体のソースコードの公開が必要になるよ。
DLLとlibファイルを介してexeに結合させること場合は必要ない、
というのがGPLに比べたときの劣化(Lesser)具合。
Qt自体を改変したときは、Qt部分のソースコードの公開が必要。
しかしプログラム本体には波及しない。
0011デフォルトの名無しさん
2010/12/15(水) 14:48:290012デフォルトの名無しさん
2010/12/15(水) 16:02:05現実的にはそうなるが
オブジェクトコードでもいいことになってるだろ一応
0013デフォルトの名無しさん
2010/12/15(水) 16:24:30ってことがわかってないんじゃない?
0014デフォルトの名無しさん
2010/12/15(水) 16:37:18動的リンクの時は公開の必要ないとしか書いてないんだからあってるだろ
静的リンクのときは説明長くなるから最後の二行の通りでいいじゃん
0015デフォルトの名無しさん
2010/12/15(水) 17:07:03つまりMinGW使わない場合でもMS SDKを使えばVS2008は必要ではないということだろ
0016デフォルトの名無しさん
2010/12/15(水) 21:23:24make時の *.o(windowsなら*.obj)だけを公開すればいいから十分現実的だと思うがね。
デメリットは実行ファイルのみに比べて、多少リバースエンジニアリングが楽になるくらい。
0017デフォルトの名無しさん
2010/12/16(木) 17:20:59uiファイルベースでQMainWindowからGUIアプリを作ってるんですが、
メインウィンドウへのアイコンの指定方法がよくわかりません。
リソースファイル(*.rc)をいじって用意したアイコンを登録して、
プログラムのアイコンには設定できたのですが、
メインウィンドウのアイコンには設定されません。
0018デフォルトの名無しさん
2010/12/16(木) 17:25:49setWindowIcon(ico);
0019デフォルトの名無しさん
2010/12/16(木) 19:09:51まず、APP_ICONが定義されてない。
app.qrcに<file>app.ico</file>の行を追加してもロードに失敗してなぜだろうと思ってたんだけど、
<qresource prefix="/visualchanger">
「prefix="/visualchanger"」を省いたらいけたよ!
あとは*.uiファイルに書いてしまえると便利なんだけどなぁ。
ひとまず動くようになりました。
0020デフォルトの名無しさん
2010/12/17(金) 11:47:10ドロップダウンメニューが出るようにしたんだけど、
各メニュー項目にサブ項目の矢印が出る。
当然サブ項目なんて設定してない。
これって、こんなものなの?
0021デフォルトの名無しさん
2010/12/17(金) 12:52:320022デフォルトの名無しさん
2010/12/17(金) 14:22:36なるほど……。
各メニュー項目はQActionで、QMenuはその入れ物なのか。
ありがとうございます。
0023デフォルトの名無しさん
2010/12/17(金) 15:19:240024デフォルトの名無しさん
2010/12/17(金) 16:42:570025デフォルトの名無しさん
2010/12/17(金) 16:53:06QWTてのあるけど今一使い方が分からんす
0026デフォルトの名無しさん
2010/12/17(金) 17:23:17XMLを読み書きするの、何か他のライブラリを使ったほうがいいのかな。
0027デフォルトの名無しさん
2010/12/17(金) 17:31:53感じだよ。
002826
2010/12/17(金) 17:53:51こういう関数を用意しておくと、foreachでループを回せるようになる。
(↑Qt特有? C++0x?)
QList<QDomElement> getElementsByTagName(QDomElement elem, QString tagName) {
QList<QDomElement> result;
QDomNodeList childLst = elem.elementsByTagName(tagName);
for (int i = 0; i < childLst.length(); i++) {
QDomNode n = childLst.at(i);
if(n.isNull())
continue;
QDomElement child = n.toElement();
result.append(child);
}
return result;
}
ループ:
QDomNodeList layersetLst = root.elementsByTagName("LayerSet");
QDomNode n = layersetLst.at(0);
if(n.isNull())
return 1;
QDomElement layerset = n.toElement();
foreach(QDomElement layer, getElementsByTagName(layerset, "Layer")) {
printf(" Layer: %s\n", layer.attribute("name").toStdString().c_str());
foreach(QDomElement item, getElementsByTagName(layer, "Item")) {
printf(" Item: %s\n", item.attribute("name").toStdString().c_str());
}
}
0029デフォルトの名無しさん
2010/12/17(金) 18:14:55下記URLのCustomProxy::itemChangeが何をしているのかがよくわからない。
想像するに、
Dialog内にあるcombobox押下時の、
popup部分のレンダリングを高速化しているという認識で良いのかしら?
コメントにしても結果が全く変わらないんだよね。
http://doc.qt.nokia.com/4.7-snapshot/demos-embeddeddialogs-customproxy-cpp.html
0030デフォルトの名無しさん
2010/12/17(金) 22:08:26基本は QwtPlotCurve に setData でデータ詰めて、QwtPlot Widget の
showCurve で表示。
QwtPlotCurve をカスタマイズすれば、いろいろなグラフが作れるので、
重宝してる。
0031デフォルトの名無しさん
2010/12/18(土) 02:32:53QtGuid4.dllは正しいwindowsイメージではありません。
と言われる。
C:Qt/qt/binからコピーしてきたdllを、debug内に突っ込んだだけなんだが。
Cored4は読み込んでくれる、どう回避したらいい?
0032デフォルトの名無しさん
2010/12/18(土) 02:34:48コマンドプロンプトで使うつもりで作ったプロジェクトをstaticライブラリとして読み込み、
QtのDockWidgetに出力させたいのですが、coutやcerrの出力先をDockWidgetに向けるには
どうしたら良いでしょうか?
一応自分でもググったりしたのですが、わからず…。
どうかご助力お願い致します。
0033デフォルトの名無しさん
2010/12/18(土) 02:45:05debug用のdllはまた別にある
0034デフォルトの名無しさん
2010/12/18(土) 03:03:53さんくす
調べてみる
0035デフォルトの名無しさん
2010/12/18(土) 03:14:090036デフォルトの名無しさん
2010/12/18(土) 03:44:44QtGui4のデバッグ用がQtGuid4ってことでいいんだよな?
で、そのQtGuid4が正しくないと言われるんだが
これはQtを再インストールするしかないか?
0037デフォルトの名無しさん
2010/12/18(土) 05:12:140038デフォルトの名無しさん
2010/12/18(土) 09:48:24Qtは標準入出力をハンドリングしてなさそうだから、OS固有の仕組み使うしか
ないんじゃないかなー。Windowsだったら ::GetStdHandle() 使うとか。
0039デフォルトの名無しさん
2010/12/18(土) 11:56:30debug用のruntimeは入れてあるよね?
0040デフォルトの名無しさん
2010/12/18(土) 12:02:20自前のstreambufを実装する
例
http://lists.trolltech.com/qt-interest/2005-06/thread00166-0.html
0041デフォルトの名無しさん
2010/12/18(土) 12:36:20ありがとうございます!
解決、あるいはわからないことがあればまた書き込むと思うので
厚かましいようではありますが、その時はどうかよろしくお願いします。
0042デフォルトの名無しさん
2010/12/18(土) 12:58:00ビルドされたexeを
Dependency Walkerに読ませて、
何のDLLを呼び出しているか調べてご覧。
Qt+vs2008だと何のDLLを利用するのかがわりと暗黙的に
行われるので、配布する前にチェックが必要。
幸い、静的にリンク解決してるのでDependency Walkerで調べられる。
0043デフォルトの名無しさん
2010/12/18(土) 13:05:39それだと、ファイル名はわかるけど、どのバージョンの(≒どこにある)DLLが必要なのかが
わからないのよ。
Qtは複数バージョンを入れることもままあるので、典型的なDLL地獄だねw
0044デフォルトの名無しさん
2010/12/18(土) 18:28:080045デフォルトの名無しさん
2010/12/18(土) 18:53:31exeがdllを探す順序がわかってないだけなんじゃないの?
0046デフォルトの名無しさん
2010/12/18(土) 19:46:11Dependency WalkerはカレントディレクトリにないDLLを
ロードする時にはそのPATHも教えてくれるよ。
0047デフォルトの名無しさん
2010/12/18(土) 22:19:05そうじゃなくて、>>31 の問題には Dependency Walker は役に立たない、ってことですわ。
実行ファイルがどのファイル名のDLLを要求してるのはわかるが、どのバージョンを
要求しているのか(例えば Mingw版なのかVS版なのか、4.7.0なのか4.7.1なのか)は
やってみなくちゃわからない、ってこと。
ちゅーか、おまいらは困ってないの?
0048デフォルトの名無しさん
2010/12/18(土) 22:40:05リリース版では問題なく起動できる。
デバック版のdllだけ不調。
Mingwで、4.7.0でやってる。
0049デフォルトの名無しさん
2010/12/18(土) 22:49:17有り得るのか?
release build なら(必要な関数が揃っているなら)多少のversion違いでも、
動作するし。
0050デフォルトの名無しさん
2010/12/18(土) 23:05:25自分の環境で動けば十分なんじゃね?
MingWはC標準ライブラリがVS2008と全く互換性がないから、
ビルドした実行プログラム(exe/dll)を絶対に混ぜちゃダメ。
Qtはなまじクロスプラットフォームだからその辺の表現が曖昧になってるけど、
WindowsでQtアプリを開発するならどちらで開発するのかはっきりさせたほうがいいよ。
0051デフォルトの名無しさん
2010/12/18(土) 23:08:22まっとうなWindowsアプリとしてバリバリ書いて、
一般に配布されてるクローズドソースなDLLも使っていく、ということなら
素直にvs2008版を使えばいい。
そうじゃなくてWindowsでも動くクロスプラットフォームなアプリを
なるべくUnix互換として作っていきたいなら文句なくMingWになるだろう。
Unix系のオープンソースライブラリを自前でビルドして、自由に組み合わせて使えばいい。
0052デフォルトの名無しさん
2010/12/18(土) 23:20:18何を困ってるのか全然わからん。>>49の言うとおり、自分でビルドしたんだから
MinGWなのかVSなのかはもちろん、4.7.0なのか4.7.1なのかも当然自分が知ってる
はずだろ?
0053デフォルトの名無しさん
2010/12/18(土) 23:41:01デバッグビルドされたアプリを配布目的以外で別の環境で動かしたい、ってのはあるぞえ。
Windowsであれば、2000/XP/Vista/7で動くかどうかの検証したい、とか。
>>52
Qt Creator 上でデバッグビルドして、デバッグする場合、どこにあるDLLを使っているのかが
わからない、ってこと。Dependency Walker は、すでに実行中のプログラム(=Qt Creatorが
実行しているデバッグアプリ)に対しては解析できないでしょ?
Qt Creator でのデバッグ時、どこのDLLを使っているのかがわかればいいだけの話です。
…と書いてQt Creator立ち上げたらわかった。
デバッグ時に ウィンドウ→表示→モジュール を選択してモジュールリストを出したら、
フルパスで読み込まれたDLLのリストが出た。これでOKじゃんw
>>48
てことで、数行上に書いた方法でパスを洗い出してDLLを置いてみそ。
0054デフォルトの名無しさん
2010/12/19(日) 01:10:54C#、Java、WinAPI、MFCのどれよりもいいわ
おれ、これから、これをメインにするわ
0055デフォルトの名無しさん
2010/12/19(日) 01:12:020056デフォルトの名無しさん
2010/12/19(日) 15:00:10Qtで4日かかってサンプルアプリ作って、
.NETに対する優位性を布教しようと思ったら、
.NETと大してアプリの速度は変わらず、
開発にかかる時間は.NETのほうがずっと短いので
布教にならなかったでござるの巻。
もうちょっと大きな規模じゃないとダメか……。
0057デフォルトの名無しさん
2010/12/19(日) 15:22:310058デフォルトの名無しさん
2010/12/19(日) 15:28:24少なくとも初回起動速度は.NETよりずっと速いんじゃないか?
Qtが.NETに対して明らかに優位だと思うのは、レイアウトの柔軟さと
国際化(多言語)対応の容易さかな。
実行時にUIの言語を動的に切り替えるなんて、Qtじゃなければ簡単
にはできないと思う。
> 開発にかかる時間は.NETのほうがずっと短いので
そうか?Qtだって慣れると早く組めると思うけど。
もう少し修行してから布教した方が良いのではw
0059デフォルトの名無しさん
2010/12/19(日) 15:42:07>起動速度
そうなんだけど、これはアプリがある程度大きくならないと分からないよね。
>レイアウト、多国語対応
UIのデザインがXMLで組めて実行時に組み立ててくれる仕組みがあるのはいいね!
ただ普通に作る場合はuiファイルをmoc.exeが読み込んでh/cppのソースコードを自動生成するようだ。
言語の切り替えはテキストリソースをDLLにビルドして
起動時に切り替えられることは確認してるけど、実行時中に変更する方法は分からないなあ、確かに。
>開発時間
たしかに経験値の差はまだ(自分の中で)大きい。
作ったサンプルだと、.NET版は2〜3時間でできてしまった。
0060デフォルトの名無しさん
2010/12/19(日) 15:45:42WPFとの比較ではないよね?
0061デフォルトの名無しさん
2010/12/19(日) 16:00:44いったい、どんなサンプルを作ったんだ?
このスレに常駐しているイケメンだったら1〜2時間で作っちゃうかもしれないぞ
006254
2010/12/19(日) 16:12:01小生はそういうことをいっているんじゃないんだよ。
プログラム作業がおもしろいよ。
C#って部品並べて、コーディングをちょろっとやるだけじゃん。
難しいのをドーパミンだしながら、1000行くらい打つのをやりたいんだよ。
006354
2010/12/19(日) 16:14:01WebはPerl、GUIはQtだよ。
0064デフォルトの名無しさん
2010/12/19(日) 16:33:51レイヤーとして切り出された透過pngを、
短冊状に並べられた切り替えボタンで表示/非表示を切り替えて
必要な組み合わせを手早く合成するためのツール。
Qt側は得られた知見もそれなりにあるから、
見たい人がいるならソースコードを公開してもいいですよ。
0065デフォルトの名無しさん
2010/12/19(日) 17:04:19Qtを使い始めて4日って意味かな?
0066デフォルトの名無しさん
2010/12/19(日) 17:16:58Qt も結構「部品並べて、コーディングをちょろっとやるだけ」の場合も多いんだが…
0067デフォルトの名無しさん
2010/12/19(日) 17:28:55>起動時に切り替えられることは確認してるけど、実行時中に変更する方法は分からないなあ、確かに。
それはお前があほだからだろ
0068デフォルトの名無しさん
2010/12/19(日) 17:43:14サンプル改造以外のスクラッチからはこれが初めて。
最初にUIのデザインを構築する段階で何度もつまずいた。
これだけで1日2日かかったな。
引っかかったところは前回のスレ通り。
他、スロットの定義とconnectのやり方とか
qSortのやり方とか
foreach構文の使い方とか(Qtになって初めてC++で使えるのを知った)
QPixmapでの画像処理のいろはとか
QStatubarのクセとか
Widgetを動的に作るときに適切にスタイルを与えたい時に何が必要かとか
QFileDialogの使い方とか
0069デフォルトの名無しさん
2010/12/19(日) 18:13:150070デフォルトの名無しさん
2010/12/19(日) 19:10:374日もかかったのは、Qt の生産性うんぬんより
Qt に慣れてなかったからだと思う。
熟練度が同じ状態で生産性を比べないとだめ。
またはゼロから学習した場合の難易度を比べる
0071デフォルトの名無しさん
2010/12/19(日) 20:59:53主にWindowsで動かすことしか考えてないライブラリと比べて
マルチプラットフォームなライブラリがオーバーヘッドが同程度なら、それは割といいんじゃないか。
それよりも、>>64の意味がいまいちわからないのだが、組み合わせを探すアルゴリズムが遅いんじゃないの?
0072デフォルトの名無しさん
2010/12/19(日) 21:16:54そういうQtと.NETのGUIアプリが同程度といっているのではなくて、
作ったサンプルでは負荷が小さすぎて体感差が出なかっただけのことで。
64の話だけど、レイヤーの切り替えはマニュアル操作だよ。
切り替えると、合成済みの表示画像を
破棄してまた最初からレイヤーの合成処理をやり直す。
大体5-8レイヤーくらいあるんだけど、
1600x1200クラスになると.NETの方が遅いね。
1024x1024くらいならほとんど問題にならない。
で、対象となるデータはだいたいこんなサイズなので。
0073デフォルトの名無しさん
2010/12/19(日) 22:21:51コンストラクタの親は何を入れればいい?
↑親
MainWindow
QTabWidge
QWidget
QHLayout
QLineEdit
↓子
QLineEditの親は QHLayout 、 MainWindow 、 NULL ?
いちいち設定するの面倒なので今はNULL設定しているが、今のところ問題が起きてない。
親を設定するとどんな効果があるの?親設定しないとちゃんとメモリ解放されないのか
0074デフォルトの名無しさん
2010/12/19(日) 22:54:29layout->addWidget()を呼び出した段階で
登録したWidgetの親を設定してくれるようになってるよ。
だからコンストラクタ時には不要っちゃ不要だな。
具体的には
void QLayout::addChildWidget(QWidget *w)
0075デフォルトの名無しさん
2010/12/19(日) 23:26:23できるんやから。その辺もアピールポイントとしてよろしく。
0076デフォルトの名無しさん
2010/12/19(日) 23:33:12MainWindow::setCentralWidgetも同様に自動で親設定してくれる?
set***やadd***系は自動登録って認識でおっかな
0077デフォルトの名無しさん
2010/12/20(月) 00:14:08ソース確認したら自動で親設定してたよ。QLayoutのparentWidget()をね。
0078デフォルトの名無しさん
2010/12/20(月) 01:55:41> 1600x1200クラスになると.NETの方が遅いね。
> 1024x1024くらいならほとんど問題にならない。
Qtの方が速いのか。そりゃすごい。
0079デフォルトの名無しさん
2010/12/20(月) 03:19:49ちょっと.NET Frameworkに突っ込んだ話になるけど、
pngをメモリに読み込んで合成処理してコントロールに渡すという処理の場合、
一旦マネージドメモリに移してから再度アンマネージドメモリに転送するという
ことをやってるのでどうしても余計な時間を掛かっちゃうんだよ。
でも.NETのコードが動いている部分が少ないのでこれでもまだマシな方。
例えば各ピクセル処理を.NETのコードで書いてたら
そのたびにペナルティーが発生してQt版と速度差が出るだろうな
0080デフォルトの名無しさん
2010/12/20(月) 05:04:260081デフォルトの名無しさん
2010/12/20(月) 16:41:29なにこれ笑うところ?
それとも釣り?
0082デフォルトの名無しさん
2010/12/20(月) 16:51:53何を笑いたいのか知らんが、foreachはQt標準のマクロによる拡張構文だぞ。
http://doc.qt.nokia.com/latest/qtglobal.html#Q_FOREACH
0083デフォルトの名無しさん
2010/12/20(月) 17:13:34> C++で使えるのを知った
ここが笑いどころなんでしょ
0084デフォルトの名無しさん
2010/12/20(月) 18:46:120085デフォルトの名無しさん
2010/12/20(月) 19:03:21C++0x の for (int &x: array) とか、あるにはあるけどね。
Qtの foreach は遥かに強力でエレガントだ。
# 内部では、かなり強引な方法で展開してるみたいだけど。
0086デフォルトの名無しさん
2010/12/20(月) 19:54:270087デフォルトの名無しさん
2010/12/20(月) 20:25:410088デフォルトの名無しさん
2010/12/20(月) 20:36:080089デフォルトの名無しさん
2010/12/20(月) 20:44:330090デフォルトの名無しさん
2010/12/20(月) 21:07:02LGPL_EXCEPTION.txtの制約に反するならば、動的リンクでも公開が必要。
0091デフォルトの名無しさん
2010/12/20(月) 21:21:10stylesheetはQtの汚点、なくした方がよい。これからstylesheetを使おうと思うなら止めた方がよい。
少し慣れて、ここも手を入れたいと思うようになると、できないことがぞろぞろ出てくる。
そういったできないことへの対応は、最近まったくされない。
QtのStyleのWhitepaperに書かれているように五千行以上でパフォーマンスが劣化する。
こんな程度では大きいアプリケーションにstylesheetを使えない。
0092デフォルトの名無しさん
2010/12/20(月) 22:34:050093デフォルトの名無しさん
2010/12/21(火) 00:31:59Cだと配列の数が必要なので、面倒。
動的確保じゃなければsizeof使えばいいけど。
0094デフォルトの名無しさん
2010/12/21(火) 09:36:09Qt 4.6 for visual studioとperlライブラリ(perl510.lib )をVC++2008exp上で使ってます。
perlライブラリを使った関数をインクルードした状態でQtのconnect関数を使うと
(例) connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()))
error C2660: 'win32_connect' : function does not take 4 arguments
とエラーが出ます。ぐぐるとwin32_connectはQt関係ではなくperlのソケット関係の
名前のようです。
QObject::connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())) とすると
error C2039: 'win32_connect' : is not a member of 'QObject' とエラーを返されます。。。
ちなみにperlライブラリを使った関数のを除くと正常に作動します。。。。
どうすればQtのconncectとして認めさせることが出来るでしょうか?
0095デフォルトの名無しさん
2010/12/21(火) 10:31:56#undef connect
0096デフォルトの名無しさん
2010/12/21(火) 10:49:45perlを使うソースコードとQtを使うソースコードを分ければいいんじゃね?
009794
2010/12/21(火) 10:56:23ギャー!! 出来た! 動いた!
マジ感謝です。ひょっとしたらQtあんまり関係なかったかもだけど
即効で的確なアドバイスありがとうございました!!
はぁ、これでこのクリスマス休暇はゆったりとQtで自作アプリ作りに励める。。。
0098デフォルトの名無しさん
2010/12/21(火) 16:31:260099デフォルトの名無しさん
2010/12/21(火) 20:09:51ふーん、そういうものなんですか。
んじゃ、使いどころを考えればそれなりに使えるって事ですね、stylesheet。
こんな仕組み、自前での実装は大変でござるよニンニン。
0100デフォルトの名無しさん
2010/12/21(火) 22:12:040101デフォルトの名無しさん
2010/12/21(火) 22:49:57変数をコンストラクタに渡した後は削除しても問題ないのでしょうか?
そこら辺qtで統一されていますか
■ このスレッドは過去ログ倉庫に格納されています