Когда я использую setUseOpenGL (true), некоторые свойства QChartSeries будут отключены - PullRequest
2 голосов
/ 13 апреля 2019

Во-первых, моя среда QT - 5.12.0 с 64-разрядной версией MSVC 2017, я использовал 5.10.0 с 64-разрядной версией MSVC 2017, но результат тот же.

Например, в QLineSeries setPointsLabelVisible и setPointsVisible будут отключены. В QScatterSeries setMarkerShape будет отключен. Так же, как изображение, которое я загрузил.

рис 1

enter image description here

На этой картинке я не устанавливал UseOpenGL (true)
рис 2

enter image description here

В то время как на этой картинке я установил UseOpenGL (true) и маркер Shape стал блок вместо круга с ребром.

Я пытался установить эти свойства после setUseOpenGL (true), но он не работает.

Я хочу знать, как включить эти свойства при использовании setUseOpenGL (true).

1 Ответ

2 голосов
/ 13 апреля 2019

Я только что просмотрел исходный код QtChart, все QChartSeries унаследованы от QAbstractSeries, а в QAbstractSeries есть некоторые функции, такие как setUseOpenGL. Есть несколько аннотаций:

Ускорение рисования серий OpenGL предназначено для случаев, когда требуется быстрое рисование большого количества точек. Он оптимизирован для эффективности, и поэтому в серии, в которой он используется, отсутствует поддержка многих функций, доступных для неускоренных серий:

  • Анимации серий не поддерживаются для ускоренных серий.
  • Метки точек не поддерживаются для ускоренных рядов.
  • Стили перьев и формы маркеров игнорируются для ускоренных серий.
  • Поддерживаются только сплошные линии и простые точки разброса.
  • Точки разброса могут быть круглыми или прямоугольными, в зависимости от используемого графического оборудования и драйверов.
  • Полярные диаграммы не поддерживают ускоренные серии.
  • При использовании ускоренных серий не рекомендуется включать тень на графике или использовать прозрачный цвет фона диаграммы, поскольку это может значительно снизить частоту кадров.

Я думаю, это означает, что setUseOpenGL используется для высокопроизводительного рисования. И он не будет поддерживать многие функции, которые поддерживаются, когда вы не используете setUseOpenGL.

...