Подсказки при наведении на область диаграммы круговой QtCharts
Можно ли средствами Qt сделать всплывающие подсказки (информацию о секторе диаграммы, как в легенде), которые будут появляться при наведении мыши на часть диаграммы?
И как сделать, чтобы менялся цвет сектора, на который наведена мышь?
Может быть, есть универсальный способ сделать это для любого вида диаграмм, а не только для круговой?
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Вы должны использовать сигнал hovered QPieSeries
void QPieSeries::hovered(QPieSlice *slice, bool state)
Этот сигнал испускается, когда указатель мыши находится над срезом, заданным срезом.
Когда мышь перемещается по срезу, состояние становится истинным, а когда мышь снова удаляется, становится ложным.
import sys
from PyQt5.Qt import *
from PyQt5.QtChart import QChart, QChartView, QPieSeries, QPieSlice
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("DonutChart hovered Example")
self.resize(700,600)
series = QPieSeries()
series.setHoleSize(0.35)
series.append("Белки 4.2%", 4.2)
slice = series.append("Жиры 15.6%", 15.6)
series.append("Other 23.8%", 23.8);
series.append("Углеводы 56.4%", 56.4);
chart = QChart()
chart.legend().hide()
chart.addSeries(series)
chart.setAnimationOptions(QChart.SeriesAnimations)
chart.setTitle("hovered Example")
chart.setTheme(QChart.ChartThemeBlueCerulean)
chartview = QChartView(chart)
chartview.setRenderHint(QPainter.Antialiasing)
self.setCentralWidget(chartview)
series.hovered.connect(self.handle_hovered)
def handle_hovered(self, slice, state):
print(slice.label(), slice.value(), state)
if state:
slice.setExploded(True)
slice.setLabelVisible(True)
else:
slice.setExploded(False)
slice.setLabelVisible(False)
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())
