如果我理解正確的話,你只需要選擇點的能力的2D圖形?
QLineSeries *series = new QLineSeries();
// Fill it up with your data
Chart *chart = new Chart();
chart->addSeries(series);
然後要處理選擇,您可以重寫QChartView鼠標事件處理程序。它可能實際上是你繼承的圖表,對此不確定。
class ChartView : public QChartView
然後,您可以重寫鼠標事件處理程序。
protected:
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
然後走線系列數據,遍歷它,並得到所有騙你創建的邊框內的點(你可以創建這個自己僅僅使用鼠標事件,或用QRubberBand做如果你想渲染它)。像這樣的例子:http://doc.qt.io/qt-4.8/qrubberband.html
void Widget::mousePressEvent(QMouseEvent *event)
{
origin = event->pos();
if (!rubberBand)
rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
rubberBand->setGeometry(QRect(origin, QSize()));
rubberBand->show();
}
void Widget::mouseMoveEvent(QMouseEvent *event)
{
rubberBand->setGeometry(QRect(origin, event->pos()).normalized());
}
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
rubberBand->hide();
// determine selection, for example using QRect::intersects()
// and QRect::contains().
}
感謝您的回答!是否可以像圖片上顯示的那樣對圖像着色? 如果我使用橡皮筋,我怎麼知道,哪些點被選中,哪些沒有被選中? – Blacktiger800