要在QGraphicsView
中添加一个从上到下的时间轴,您可以按照以下步骤:
- 创建一个继承自
QGraphicsItem
的子类来表示时间轴。
class TimeAxisItem(QGraphicsItem):
def __init__(self, length, parent=None):
super().__init__(parent)
self.length = length
def boundingRect(self):
return QRectF(0, 0, 20, self.length)
def paint(self, painter, option, widget=None):
pen = QPen(Qt.black)
pen.setWidth(2)
painter.setPen(pen)
painter.drawLine(10, 0, 10, self.length)
在这个类中,我们重写了boundingRect()
方法以指定该项的边界矩形。然后,我们实现了paint()
方法以绘制时间轴线。
- 在
QGraphicsView
子类中创建并添加时间轴项。
class MyGraphicsView(QGraphicsView):
def __init__(self):
super().__init__()
scene = QGraphicsScene(self)
# 添加时间轴项
time_axis_item = TimeAxisItem(500) # 时间轴长度为500
scene.addItem(time_axis_item)
self.setScene(scene)
if __name__ == '__main__':
app = QApplication([])
view = MyGraphicsView()
view.show()
app.exec_()
在这个例子中,我们首先创建了一个名为MyGraphicsView
的子类,并将其设置为主窗口的中央窗口部件。然后,我们创建一个场景对象并将其设置为视图的场景。最后,我们创建一个时间轴项,并将其添加到场景中。
在上面的代码中,我们创建了一个长度为500像素的时间轴项,并将其添加到场景中。您可以根据需要调整长度或其他属性。
完整代码如下:
from PyQt5.QtWidgets import QApplication, QGraphicsView, QGraphicsScene, QGraphicsItem
from PyQt5.QtCore import QRectF
from PyQt5.QtGui import QPen
from PyQt5.QtCore import Qt
class TimeAxisItem(QGraphicsItem):
def __init__(self, length, parent=None):
super().__init__(parent)
self.length = length
def boundingRect(self):
return QRectF(0, 0, 20, self.length)
def paint(self, painter, option, widget=None):
pen = QPen(Qt.black)
pen.setWidth(2)
painter.setPen(pen)
painter.drawLine(10, 0, 10, self.length)
class MyGraphicsView(QGraphicsView):
def __init__(self):
super().__init__()
scene = QGraphicsScene(self)
# 添加时间轴项
time_axis_item = TimeAxisItem(500) # 时间轴长度为500
scene.addItem(time_axis_item)
self.setScene(scene)
if __name__ == '__main__':
app = QApplication([])
view = MyGraphicsView()
view.show()
app.exec_()