Nuke 8 で SVG アイコンを使用している UI があります。SVG ファイルを使用したアイコンの設定は正常に機能しますが、Qt でアイコンのサイズをより大きなサイズに変更する方法が見つからないようです。アイコンのサイズを設定してからSVGファイルをロードし、ウィジェットにアイコンを設定してからウィジェットをQTreeWidgetItemに配置し、ウィジェットのスタイルシートを設定してSVGを使用しようとしました。ファイルをロードする前に SVG ファイルをスケールアップできることはわかっていますが、Qt 内で処理することを好みます。
ここに私がやっていることのいくつかのサンプルコードがあります (これは動作しますが、アイコンは拡大縮小しません):
from PySide import QtGui, QtCore
class TestTreeItem(QtGui.QTreeWidgetItem):
def __init__(self, parent, value, status):
super(TestTreeItem, self).__init__(parent)
# Column 0
self.setText(value)
# Column 1
# Using Qt Resources. All of the maps are to svg files.
status_map = {0: ":/images/good",
1: ":/images/warning",
2: ":/images/error"}
self.setSizeHint(1, QtCore.QSize(64, 64))
icon = QtGui.QIcon(status_map[status])
self.setIcon(1, icon)
動作しないコード:
アイコンのサイズを設定し、アイコンをロードします
from PySide import QtGui, QtCore
class TestTreeItem(QtGui.QTreeWidgetItem):
def __init__(self, parent, value, status):
super(TestTreeItem, self).__init__(parent)
# Column 0
self.setText(value)
# Column 1
# Using Qt Resources. All of the maps are to svg files.
status_map = {0: ":/images/good",
1: ":/images/warning",
2: ":/images/error"}
self.setSizeHint(1, QtCore.QSize(64, 64))
icon = QtGui.QIcon(QtGui.QSize(64, 64))
icon.addFile(status_map[status])
self.setIcon(1, icon)
ピックスマップを作成してスケーリングする
from PySide import QtGui, QtCore
class TestTreeItem(QtGui.QTreeWidgetItem):
def __init__(self, parent, value, status):
super(TestTreeItem, self).__init__(parent)
# Column 0
self.setText(value)
# Column 1
# Using Qt Resources. All of the maps are to svg files.
status_map = {0: ":/images/good",
1: ":/images/warning",
2: ":/images/error"}
self.setSizeHint(1, QtCore.QSize(64, 64))
pixmap = QtGui.QPixmap(status_map[status])
pixmap.scaled(64, 64)
icon = QtGui.QIcon(pixmap)
self.setIcon(1, icon)
空のピックスマップを作成し、SVG を読み込みます
from PySide import QtGui, QtCore
class TestTreeItem(QtGui.QTreeWidgetItem):
def __init__(self, parent, value, status):
super(TestTreeItem, self).__init__(parent)
# Column 0
self.setText(value)
# Column 1
# Using Qt Resources. All of the maps are to svg files.
status_map = {0: ":/images/good",
1: ":/images/warning",
2: ":/images/error"}
self.setSizeHint(1, QtCore.QSize(64, 64))
pixmap = QtGui.QPixmap(QtGui.QSize(64, 64))
pixmap.load(status_map[status])
icon = QtGui.QIcon(pixmap)
self.setIcon(1, icon)
ウィジェットを作成し、SVG を使用するようにスタイル シートを設定します。
from PySide import QtGui, QtCore
class TestTreeItem(QtGui.QTreeWidgetItem):
def __init__(self, parent, value, status):
super(TestTreeItem, self).__init__(parent)
# Column 0
self.setText(value)
# Column 1
# Using Qt Resources. All of the maps are to svg files.
widget = QtGui.QWidget(parent)
status_map = {0: ":/images/good",
1: ":/images/warning",
2: ":/images/error"}
self.setSizeHint(1, QtCore.QSize(64, 64))
widget.setStyleSheet("image: url({});".format(status_map[status]))
parent.setItemWidget(self, 1, widget)