我正在尝试放大一个由大量彼此接近的正弦波组成的图表,但是当我不小心点击其中一条曲线时(它们在图像中紧密相连),橡胶带不会被创建,因此忽略缩放,它只允许我放大图表的白色边框。
任何想法如何解决它,所以如果我点击曲线然后它也会缩放?
覆盖的功能:
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_())
答案 0 :(得分:0)
好的,问题是OpenGL,它在所有其他窗口上创建了一个透明窗口小部件,这是一个无法动画的单独窗口小部件: https://doc.qt.io/qt-5/qabstractseries.html#useOpenGL-prop
系列绘图的OpenGL加速适用于那些用例 需要快速绘制大量的点。它经过优化 效率,因此使用它的系列缺乏对许多人的支持 非加速系列可用的功能:
加速系列不支持系列动画。
...
所以简单地评论{{1}}解决了它。