2017-08-26 67 views
0

我的大學我正在開發一個項目,在那裏我需要創建一個顯示溫度與時間相比變化的板。因此我使用QT DataVisualization來展示它如何改變。其實我只需要2D可視化而不是3D可視化?是否有可能通過QT DataVisualization創建2D可視化?要知道,高度表示板塊的溫度如何,如果點低,則冷,如果網格點高,則板塊很熱。QT C++創建具有選擇多個網格點功能的網格

我想要做的下一件事是創建一個工具,用於在可視化中選擇多個網格點。我已經閱讀了關於QTRubberBand的一些信息,但是它在相同的框架中工作嗎?你有什麼更好的想法,我應該使用哪個框架?

滑塊移動時,必須可以升級可視化。

你對QDataVisualization工具的使用方法有什麼建議嗎?

在這裏你可以看到一張圖片,它的外觀現在:提前

Visualization of the plate

謝謝!

Blacktiger800

回答

0

如果我理解正確的話,你只需要選擇點的能力的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(). 
} 
+0

感謝您的回答!是否可以像圖片上顯示的那樣對圖像着色? 如果我使用橡皮筋,我怎麼知道,哪些點被選中,哪些沒有被選中? – Blacktiger800