1

私がやりたいのは、「hello world」を a の a に書き込むことだけQGraphicsSceneですQGraphicsView。私は何を間違っていますか?QGraphicsViewDesigner でを作成し、次に で__init__を作成しQGraphicsSceneてそれにテキストを追加しましたが、黒いウィンドウしか表示されません。

import sys
from PySide import QtCore, QtGui
from PySide.QtGui import *

class MyDialog(QDialog):
    def __init__(self):
        super(MyDialog, self).__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.scene = QGraphicsScene()
        self.ui.graphicsView.setScene(self.scene)
        self.scene.setSceneRect(0,0,100,100)
        self.scene.addText('hello')


def main(argv):
    app = QApplication(sys.argv)
    myapp = MyDialog()
    myapp.show()
    app.exec_()
    sys.exit()

if __name__ == "__main__":
    main(sys.argv)

以下は、デザイナーの UI コードです。

# everything from here down was created by Designer
class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
        self.buttonBox = QtGui.QDialogButtonBox(Dialog)
        self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32))
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.graphicsView = QtGui.QGraphicsView(Dialog)
        self.graphicsView.setGeometry(QtCore.QRect(50, 30, 256, 192))
        self.graphicsView.setMouseTracking(False)
        self.graphicsView.setFrameShadow(QtGui.QFrame.Sunken)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        self.graphicsView.setForegroundBrush(brush)
        self.graphicsView.setObjectName("graphicsView")

        self.retranslateUi(Dialog)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), Dialog.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), Dialog.reject)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8))

私が得るのは、空白の黒いキャンバスで、これだけです:

スクリーンショット

4

1 に答える 1

3

2つの問題があります...

まず、QGraphicsViewで前景ブラシを黒に設定します。つまり、特に指定しない限り、すべての子がそれを継承します。

ui

    brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
    brush.setStyle(QtCore.Qt.SolidPattern)
    #self.graphicsView.setForegroundBrush(brush)
    self.graphicsView.setBackgroundBrush(brush)

また、背景を黒に変更したので、テキストを見やすい色に設定する必要があります。デフォルトでは黒になるため:

主要

    text = self.scene.addText('hello')
    text.setDefaultTextColor(QtGui.QColor(QtCore.Qt.red))

黒の背景を気にせず、単にそれが機能することを確認したい場合は、UIでこの行をコメントアウトして(またはDesignerでブラシ設定の設定を解除して)、他に何も変更しないでください。

    # self.graphicsView.setForegroundBrush(brush)
于 2012-06-23T19:34:56.160 に答える