リソースにsvgがロードされていますが、黒です。どのように色を白に変更するのですか?限り、あなたは、これは動作するはずです、Mac上でそれを必要としないようqt内のsvgの色を変更する
答えて
これはQtで行うことができます.xtプロジェクト(* .proファイル)にxmlとsvgモジュールを追加することを忘れないでください。このコードスニペットは、 "path"要素の "fill"属性を変更することで色を変更しますが、これを使用して任意の要素の属性を変更することができます。
void SetAttrRecur(QDomElement &elem, QString strtagname, QString strattr, QString strattrval);
void ChangeSVGColor()
{
// open svg resource load contents to qbytearray
QFile file("myfile.svg");
file.open(QIODevice::ReadOnly);
QByteArray baData = file.readAll();
// load svg contents to xml document and edit contents
QDomDocument doc;
doc.setContent(baData);
// recurivelly change color
SetAttrRecur(doc.documentElement(), "path", "fill", "white");
// create svg renderer with edited contents
QSvgRenderer svgRenderer(doc.toByteArray());
// create pixmap target (could be a QImage)
QPixmap pix(svgRenderer.defaultSize());
pix.fill(Qt::transparent);
// create painter to act over pixmap
QPainter pixPainter(&pix);
// use renderer to render over painter which paints on pixmap
svgRenderer.render(&pixPainter);
QIcon myicon(pix);
// Use icon ....
}
void SetAttrRecur(QDomElement &elem, QString strtagname, QString strattr, QString strattrval)
{
// if it has the tagname then overwritte desired attribute
if (elem.tagName().compare(strtagname) == 0)
{
elem.setAttribute(strattr, strattrval);
}
// loop all children
for (int i = 0; i < elem.childNodes().count(); i++)
{
if (!elem.childNodes().at(i).isElement())
{
continue;
}
SetAttrRecur(elem.childNodes().at(i).toElement(), strtagname, strattr, strattrval);
}
}
:
http://doc-snapshot.qt-project.org/4.8/qwidget.html#setGraphicsEffect
http://doc-snapshot.qt-project.org/4.8/qgraphicscolorizeeffect.html
EDIT:それともMacをサポートする必要がある場合、SVGレンダリングやエフェクトを行いますQGraphicsViewの内部にあります。
http://doc-snapshot.qt-project.org/4.8/qgraphicsitem.html#setGraphicsEffect
セットアップあなたの色付け効果は白、それを色、svgWidgetに設定します。
希望に役立ちます。
笑、私は全体QGraphicsEffectsにかましてきた複数回のMac上で作業をいけない:( – chacham15
あなたはQGraphicsViewにそれをレンダリングする気にしない場合は、QGraphicsEffectsがサポートされなければならない。やり方もあります。それをQPixmapまたはQImageにレンダリングしてから別の合成モードでレンダリングしてくださいhttp://www.slideshare.net/qtbynokia/special-effects-with-qt-graphics-viewこのスライドにはいくつかの素晴らしいコードサンプルがあります表示。 – phyatt
Qtの新しいビルドでグラフィック効果を確認する必要があります。私はそれらが修正されている可能性があります。これらの2つのリンクの間の欠落しているノートを見てください:http://qt-project.org/doc/qt-4.8 /qwidget.html#setGraphicsEffectとhttp://qt-project.org/doc/qt-5/qwidget.html#setGraphicsEffect ...これはもはや '注:グラフィックスはMacではサポートされていないので、ウィジェットのレンダリングに何らの違いも生じません。Qt5の場合 – phyatt
白が唯一必要な色ならば、簡単な解決策はイメージエディタ(Inkscapeなど)で元のSVGイメージの色を変更することです。もちろん、さまざまな色の画像を使用する必要がある場合は、合理的な解決策にはなりません。
SVG形式はXMLベースでXMLはASCIIテキストなので、QStringにSVGリソースをロードしてQString :: replace( "\"#000000 \ ""、 "\" #ffffff \ "")、変更されたQStringをQSVGRendererに渡します。
- 1. SVGマーカーの色を変更する - CSS?
- 2. SVGの色が変更されない
- 3. キャンバス上でsvgの色を変更する方法 - Fabricjs
- 4. QtのQCheckBoxテキストラベルの色を変更するには?
- 5. Qt mac/carbon/cocoa:タイトルバーの色を変更しますか?
- 6. GTKのSVG画像内の要素の色を動的に変更する方法はありますか?
- 7. SVGイメージの内部サイズを変更する
- 8. SVG - ボタンのクリックで塗りつぶしの色を変更する
- 9. SVG:影の色
- 10. JLabel内の一部のテキストの色を変更する
- 11. Javascript - テキストエリア内の特定のテキストのフォント色を変更する
- 12. ListView内のテキストの色を変更する
- 13. 画像内の選択したピクセルの色を変更する
- 14. チェックボックスリスト内の項目の背景色を変更する
- 15. Asp.netコード内のテキストの色を変更するには
- 16. Tkinterリストボックス内のアイテムの色を変更する
- 17. RichText内のOutputTextの色を変更する:dataTable
- 18. Fabric.js - インポートしたSVGの色/塗りつぶし/ストロークを変更します
- 19. 変更クラスのSVGポリゴン
- 20. mouseleave div、背景色を灰色に変更、mouseleaveでdiv内でQtip、背景色をピンク色に変更
- 21. iPhone SDK 3.0アプリ内メール - ナビゲーションバーの色調を変更する
- 22. ブートストラップでグリフィコンの内部色を変更するには?
- 23. Qtのラベル画像を変更する
- 24. "EditText"ウィジェット内のテキストの色の一部を変更します
- 25. iphoneのtitleForHeaderInSection内のフォントの色を変更します。
- 26. セル内の特定の文字の色を変更します。
- 27. Javaで色を色に変更する
- 28. jQueryでRaphael SVGイメージを変更する
- 29. div内のアスタリスクの色を変更します
- 30. リッチテキストボックス内の行の色を変更します
qt5 doc.documentElement()が "読み取り専用"オブジェクトを返すので、これはうまくいかないようです。それに変更を加えることはまったく機能しません。 –