10/12/17 17:23:17
QDomDocument~QDomElementがめっさ使いにくい。
XMLを読み書きするの、何か他のライブラリを使ったほうがいいのかな。
27:デフォルトの名無しさん
10/12/17 17:31:53
俺もそう思ってTinyXMLとか調べてみたけど、どのライブラリでも大体似たような
感じだよ。
28:26
10/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());
}
}
29:デフォルトの名無しさん
10/12/17 18:14:55
demo/embeddeddialogsのソースを見てるんですが、
下記URLのCustomProxy::itemChangeが何をしているのかがよくわからない。
想像するに、
Dialog内にあるcombobox押下時の、
popup部分のレンダリングを高速化しているという認識で良いのかしら?
コメントにしても結果が全く変わらないんだよね。
URLリンク(doc.qt.nokia.com)
30:デフォルトの名無しさん
10/12/17 22:08:26
>>25
基本は QwtPlotCurve に setData でデータ詰めて、QwtPlot Widget の
showCurve で表示。
QwtPlotCurve をカスタマイズすれば、いろいろなグラフが作れるので、
重宝してる。
31:デフォルトの名無しさん
10/12/18 02:32:53
昨日からQtを始めたて、サンプルを手本に作ってるんだが・・・。
QtGuid4.dllは正しいwindowsイメージではありません。
と言われる。
C:Qt/qt/binからコピーしてきたdllを、debug内に突っ込んだだけなんだが。
Cored4は読み込んでくれる、どう回避したらいい?
32:デフォルトの名無しさん
10/12/18 02:34:48
質問いいでしょうか?
コマンドプロンプトで使うつもりで作ったプロジェクトをstaticライブラリとして読み込み、
QtのDockWidgetに出力させたいのですが、coutやcerrの出力先をDockWidgetに向けるには
どうしたら良いでしょうか?
一応自分でもググったりしたのですが、わからず…。
どうかご助力お願い致します。
33:デフォルトの名無しさん
10/12/18 02:45:05
>>31
debug用のdllはまた別にある
34:デフォルトの名無しさん
10/12/18 03:03:53
>>33
さんくす
調べてみる
35:デフォルトの名無しさん
10/12/18 03:14:09
ファイル名にdが入ってるやつと入っていないやつの2種類があるはず
36:デフォルトの名無しさん
10/12/18 03:44:44
31だが
QtGui4のデバッグ用がQtGuid4ってことでいいんだよな?
で、そのQtGuid4が正しくないと言われるんだが
これはQtを再インストールするしかないか?
37:デフォルトの名無しさん
10/12/18 05:12:14
コピーじゃなくてPATHを通せ
38:デフォルトの名無しさん
10/12/18 09:48:24
>>32
Qtは標準入出力をハンドリングしてなさそうだから、OS固有の仕組み使うしか
ないんじゃないかなー。Windowsだったら ::GetStdHandle() 使うとか。
39:デフォルトの名無しさん
10/12/18 11:56:30
>>36
debug用のruntimeは入れてあるよね?
40:デフォルトの名無しさん
10/12/18 12:02:20
>>32
自前のstreambufを実装する
例
URLリンク(lists.trolltech.com)
41:デフォルトの名無しさん
10/12/18 12:36:20
>>38,40
ありがとうございます!
解決、あるいはわからないことがあればまた書き込むと思うので
厚かましいようではありますが、その時はどうかよろしくお願いします。
42:デフォルトの名無しさん
10/12/18 12:58:00
>>31
ビルドされたexeを
Dependency Walkerに読ませて、
何のDLLを呼び出しているか調べてご覧。
Qt+vs2008だと何のDLLを利用するのかがわりと暗黙的に
行われるので、配布する前にチェックが必要。
幸い、静的にリンク解決してるのでDependency Walkerで調べられる。
43:デフォルトの名無しさん
10/12/18 13:05:39
>>42
それだと、ファイル名はわかるけど、どのバージョンの(≒どこにある)DLLが必要なのかが
わからないのよ。
Qtは複数バージョンを入れることもままあるので、典型的なDLL地獄だねw
44:デフォルトの名無しさん
10/12/18 18:28:08
DLL地獄なんて昔の話で、今の Windows には無いなんて聞いてたけどまだあるのか…
45:デフォルトの名無しさん
10/12/18 18:53:31
>>43
exeがdllを探す順序がわかってないだけなんじゃないの?
46:デフォルトの名無しさん
10/12/18 19:46:11
>>43
Dependency WalkerはカレントディレクトリにないDLLを
ロードする時にはそのPATHも教えてくれるよ。