PyQt5 QtChart忽略曲线

时间:2017-10-28 19:48:16

标签: python qt5 pyqt5

我正在尝试放大一个由大量彼此接近的正弦波组成的图表,但是当我不小心点击其中一条曲线时(它们在图像中紧密相连),橡胶带不会被创建,因此忽略缩放,它只允许我放大图表的白色边框。

任何想法如何解决它,所以如果我点击曲线然后它也会缩放?

覆盖的功能:

class aview(QChartView):
    def __init__(self, chart, parent):
        super(aview, self).__init__(chart, parent)
        self.setMouseTracking(True)
        self.setInteractive(True)
        self.setRubberBand(self.HorizontalRubberBand)

调用覆盖功能:

class Window(QMainWindow):
    def __init__(self):
        super(Window, self).__init__()
        ...
        curve = QLineSeries()
        curve.setUseOpenGL(True)
        curve.append(.........) # this isn't important for this question
        ...
        self.current = QWidget(self)
        self.chart = QChart()
        self.chart.legend().hide()
        self.chart.addSeries(curve)

        self.chart_view = aview(self.chart, self.current)
        self.chart_view.setRenderHint(QtGui.QPainter.Antialiasing)
        ...

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Window()
    ex.show()
    sys.exit(app.exec_())

没有缩放的图表: not zoomed

水平缩放图表(由正弦波组成): zoomed

1 个答案:

答案 0 :(得分:0)

好的,问题是OpenGL,它在所有其他窗口上创建了一个透明窗口小部件,这是一个无法动画的单独窗口小部件: https://doc.qt.io/qt-5/qabstractseries.html#useOpenGL-prop

  

系列绘图的OpenGL加速适用于那些用例   需要快速绘制大量的点。它经过优化   效率,因此使用它的系列缺乏对许多人的支持   非加速系列可用的功能:

     

加速系列不支持系列动画。

     

...

所以简单地评论{{1}}解决了它。