QT开发中文网

QGraphicsView 图中怎么增加一个从上到下的 时间轴

要在QGraphicsView中添加一个从上到下的时间轴,您可以按照以下步骤:

  1. 创建一个继承自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()方法以绘制时间轴线。

  1. 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_()

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=3025

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?