PyQt4 を使用します。
私の目標は、.png の「部分」をロードし、それらを QGraphicsItems に割り当て、シーンに追加し、QGraphicsView に表示させることです。(今のところ、私は彼らの座標を気にしません。私が気にかけているのは、くそったれを機能させることだけです)。
現在、何も表示されていません。最初は、アイテムが追加されて QGraphicsView が更新されないという問題だと思っていましたが、ビューポートについてもう少し読んだ後、それは本当に意味がありませんでした。そのため、ビューを設定する前に QGraphicsView 項目を追加してテストしましたが (更新の問題ではないことがわかっています)、それでも何も表示されませんでした。パスは間違いなく正しいです。ここに何が起こっているかを示すいくつかのコードがあります...
間隔の問題を無視して、貼り付け時にレイアウトがめちゃくちゃになりました
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent = None):
QtGui.QMainWindow.__init__(self, parent)
self.setWindowTitle('NT State Editor')
winWidth = 1024
winHeight = 768
screen = QtGui.QDesktopWidget().availableGeometry()
screenCenterX = (screen.width() - winWidth) / 2
screenCenterY = (screen.height() - winHeight) / 2
self.setGeometry(screenCenterX, screenCenterY, winWidth, winHeight)
self.tileMap = tilemap.TileMap()
self.tileBar = tilebar.TileBar()
mapView = QtGui.QGraphicsView(self.tileMap)
tileBarView = QtGui.QGraphicsView(self.tileBar)
button = tilebar.LoadTilesButton()
QtCore.QObject.connect(button, QtCore.SIGNAL('selectedFile'),
self.tileBar.loadTiles)
hbox = QtGui.QHBoxLayout()
hbox.addWidget(mapView)
hbox.addWidget(self.tileBarView)
hbox.addWidget(button)
mainWidget = QtGui.QWidget()
mainWidget.setLayout(hbox)
self.setCentralWidget(mainWidget)
app = QtGui.QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
--
class Tile(QtGui.QGraphicsPixmapItem):
def __init__(self, parent = None):
QtGui.QGraphicsPixmapItem(self, parent)
self.idAttr = -1
class TileBar(QtGui.QGraphicsScene):
def __init__(self, parent = None):
QtGui.QGraphicsScene.__init__(self, parent)
def loadTiles(self, filename):
tree = ElementTree()
tree.parse(filename)
root = tree.getroot()
sheets = root.findall('sheet')
for sheet in sheets:
sheetPath = sheet.get('path')
sheetImg = QtGui.QImage(sheetPath)
strips = sheet.findall('strip')
for strip in strips:
tile = Tile()
tile.idAttr = strip.get('id')
clip = strip.find('clip')
x = clip.get('x')
y = clip.get('y')
width = clip.get('width')
height = clip.get('height')
subImg = sheetImg.copy(int(x), int(y), int(width), int(height))
pixmap = QtGui.QPixmap.fromImage(subImg)
tile.setPixmap(pixmap)
self.addItem(tile)
TileBar の「changed()」シグナルをさまざまな「ビュー」関数に接続していくつか試してみましたが、どれも機能しませんでした。Graphics View Framework を使用する方法の良い例を見つけるのに少し苦労しました (ほとんどは非常に小規模です)。完全に間違っている場合はお知らせください。
どんな助けでも大歓迎です。ありがとう。