当 QGraphicsView 画一条超出其大小时的线时,如何使它的大小增加?
How to make the QGraphicsView increase its size when it is draw a line beyond its size?
我有这个屏幕:
我在上面画了一条线,从板子里出来:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.drawingPanel = DrawingPanel(self)
verticalLayout = QtGui.QVBoxLayout( self )
verticalLayout.addWidget(self.drawingPanel)
self.setLayout( verticalLayout )
# self.setGeometry(300, 300, 400, 300)
self.resize( 400, 300 )
self.setWindowTitle('Review')
self.show()
class DrawingPanel(QtGui.QGraphicsView):
def __init__(self, parent):
QtGui.QGraphicsView.__init__(self, parent)
self.setScene(QtGui.QGraphicsScene(self))
self.setSceneRect(QtCore.QRectF(self.viewport().rect()))
# self.setSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Maximum)
pencil = QtGui.QPen(QtCore.Qt.black, 2, QtCore.Qt.SolidLine)
pencil.setStyle(QtCore.Qt.DotLine)
self.scene().addLine(QtCore.QLineF(0, 0, 300, 600), pencil)
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
如何让面板产生滚动条并且能够显示整条画好的线?
我可以找到一些其他问题:
- QGraphicsView / QGraphicsScene size matching
- QGraphicsView / QGraphicsScene image size
我修复了它只是从代码中删除了这一行:
self.setSceneRect(QtCore.QRectF(self.viewport().rect()))
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.drawingPanel = DrawingPanel(self)
verticalLayout = QtGui.QVBoxLayout( self )
verticalLayout.addWidget( self.drawingPanel )
self.setLayout( verticalLayout )
# self.setGeometry( 300, 300, 400, 300 )
self.resize( 400, 300 )
self.setWindowTitle('Review')
self.show()
class DrawingPanel(QtGui.QGraphicsView):
def __init__( self, parent ):
super( DrawingPanel, self ).__init__( parent )
scene = QtGui.QGraphicsScene()
self.setScene( scene )
# self.setSceneRect( QtCore.QRectF( self.viewport().rect() ) )
# self.setSizePolicy( QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Maximum )
pencil = QtGui.QPen( QtCore.Qt.black, 2, QtCore.Qt.SolidLine )
pencil.setStyle( QtCore.Qt.DotLine )
self.scene().addLine( QtCore.QLineF(0, 0, 300, 600), pencil )
def main():
app = QtGui.QApplication( sys.argv )
ex = Example()
sys.exit( app.exec_() )
if __name__ == '__main__':
main()
我有这个屏幕:
我在上面画了一条线,从板子里出来:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.drawingPanel = DrawingPanel(self)
verticalLayout = QtGui.QVBoxLayout( self )
verticalLayout.addWidget(self.drawingPanel)
self.setLayout( verticalLayout )
# self.setGeometry(300, 300, 400, 300)
self.resize( 400, 300 )
self.setWindowTitle('Review')
self.show()
class DrawingPanel(QtGui.QGraphicsView):
def __init__(self, parent):
QtGui.QGraphicsView.__init__(self, parent)
self.setScene(QtGui.QGraphicsScene(self))
self.setSceneRect(QtCore.QRectF(self.viewport().rect()))
# self.setSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Maximum)
pencil = QtGui.QPen(QtCore.Qt.black, 2, QtCore.Qt.SolidLine)
pencil.setStyle(QtCore.Qt.DotLine)
self.scene().addLine(QtCore.QLineF(0, 0, 300, 600), pencil)
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
如何让面板产生滚动条并且能够显示整条画好的线?
我可以找到一些其他问题:
- QGraphicsView / QGraphicsScene size matching
- QGraphicsView / QGraphicsScene image size
我修复了它只是从代码中删除了这一行:
self.setSceneRect(QtCore.QRectF(self.viewport().rect()))
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.drawingPanel = DrawingPanel(self)
verticalLayout = QtGui.QVBoxLayout( self )
verticalLayout.addWidget( self.drawingPanel )
self.setLayout( verticalLayout )
# self.setGeometry( 300, 300, 400, 300 )
self.resize( 400, 300 )
self.setWindowTitle('Review')
self.show()
class DrawingPanel(QtGui.QGraphicsView):
def __init__( self, parent ):
super( DrawingPanel, self ).__init__( parent )
scene = QtGui.QGraphicsScene()
self.setScene( scene )
# self.setSceneRect( QtCore.QRectF( self.viewport().rect() ) )
# self.setSizePolicy( QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Maximum )
pencil = QtGui.QPen( QtCore.Qt.black, 2, QtCore.Qt.SolidLine )
pencil.setStyle( QtCore.Qt.DotLine )
self.scene().addLine( QtCore.QLineF(0, 0, 300, 600), pencil )
def main():
app = QtGui.QApplication( sys.argv )
ex = Example()
sys.exit( app.exec_() )
if __name__ == '__main__':
main()