簡體   English   中英

如何在QtCharts中啟用鼠標彈出窗口?

[英]How to enable mouse popup in QtCharts?

當我的QtChart中鼠標懸停在系列上時,我需要顯示一個小彈出窗口。

Highcharts(Javascript)有一些非常好的例子,比如這個:

在此輸入圖像描述

我該如何實現這個QtCharts?

我找不到任何關於實現彈出窗口的文檔。

據我所知,你必須自己做。 我需要完全相同,並使用嵌入在QGraphicsProxyWidget中的簡單QWidget,我將其添加到圖表視圖的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 *)函數,並始終針對所有數據點檢查鼠標位置並調整彈出窗口(顯示/隱藏,定位)。 如果你有很多點會很慢,所以我使用空間網格並最初將數據點分配給網格單元格。 然后,您只需要檢查鼠標位置周圍網格單元格內的點。

我找不到更好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM