Как включить всплывающее окно мыши в QtCharts?

Мне нужно, чтобы маленькое всплывающее окно отображалось при наведении курсора мыши на ряд в моем QtChart.

Highcharts (Javascript) имеет несколько действительно хороших примеров, таких как этот:

введите описание изображения здесь

Как я могу реализовать этот QtCharts?

Я не могу найти документацию по реализации всплывающих окон.

1

Решение

Насколько я знаю, вам придется сделать это самостоятельно. Мне нужно было то же самое, и я использовал простой QWidget, встроенный в QGraphicsProxyWidget, который я добавил в QGraphicsScene представления диаграммы.

QWidget *popup = new MyPopUpWidget;
QChartView v;
QGraphicsProxyWidget *proxy = v.scene()->addWidget(popup);

// if you want a drop shadow you can use QGraphicsDropShadowEffect
QGraphicsDropShadowEffect* shadow   = new QGraphicsDropShadowEffect();
shadow->setOffset(0, 4);
shadow->setBlurRadius(8);
proxy->setGraphicsEffect(shadow);

В то время как это приятно и просто, позиционирование всплывающего окна — фактическая работа. Все простые решения не были достаточно хороши для меня. Например, есть сигналы, если ваша мышь нажимает на QGraphicsItem (все позиции ваших диаграмм — QGraphicsItems), но они, как правило, малы, и вы хотите реагировать только на фактические точки данных, а не на отрезки линий.

Вы можете переопределить функцию mouseMove (QMouseMoveEvent *) и всегда проверять положение мыши по всем точкам данных и корректировать всплывающее окно (показать / скрыть, позиционирование). Если у вас много точек, которые будут медленными, то я использовал пространственную сетку и назначил точки данных изначально ячейкам сетки. Затем вам нужно проверить только точки в ячейках сетки вокруг вашей позиции мыши.

Я не нашел лучшего решения.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]