2016-04-07 13 views
1

Qtを使用してXY軸を持つグラフに矩形を描きたいと思います。私はQCustomPlotウィジェットを見つけましたが、それは私が必要とするものではありません(または私の問題を解決するためにそれを適用する方法を理解していない)。 enter image description hereXY軸を持つグラフに矩形を描く方法Qt

enter image description here

それを動作させるためにどのように任意の提案をしてください?

答えて

1

あなたがのQCPLayerQCPItemRectを追加することによってそれを行うことができますQCustomPlot。それは最も簡単な解決策のようです。

+0

[回答](http://stackoverflow.com/questions/29444939/qcustomplot-show-item-on-qcpaxisrect-below-customplot)を入手したい場合は、 – Mikhail

1

QWidgetの内、最も単純なオーバーライドpaintEvent:

void MyWidget::paintEvent(QPaintEvent * event) 
{ 
    Q_UNUSED(event); 
    QPainter painter(this); 
    painter.drawLine(0, 10, 100, 10); 
    painter.drawLine(10, 0, 10, 100); 
    painter.drawRect(20, 20, 30, 30); 
} 
1

あなたは単なるQWidgetを使用して、それがpaintEvent()関数の再実装することができます。絵はQPainterによって実現されます。

void CMyWidget::paintEvent(QPaintEvent* event) 
{ 
    QPainter p(this); 
    p.drawLine(...); 
    p.drawRect(...); 
    p.drawText(...); 
} 


それともQGraphicsView/QGraphicsSceneフレームワークを使用することができます。これは、何が必要の例であるhttp://doc.qt.io/qt-4.8/graphicsview.html

1

を:

#include <QWidget> 
#include <QPainter> 

class MyPlot : public QWidget 
{ 
    Q_OBJECT 

public: 
    MyPlot(QWidget *parent = 0) 
     : QWidget(parent) 
    { 
    } 


protected: 
    void paintEvent(QPaintEvent *event) 
    { 
     QPainter painter(this); 

     painter.save(); 
     painter.translate(2, height() -2); // 2 pixels between axes and the windows frame 
     painter.scale(1,-1); 

     QPen pen; 
     pen.setWidth(2); 
     painter.setPen(pen); 

     // X Axis 
     painter.drawLine(0,0, width(),0); 

     // Y Axis 
     painter.drawLine(0,0, 0,height()); 

     pen.setWidth(4); 
     painter.setPen(pen); 

     // Rect 
     painter.drawRect(10,10, 60,80); 

     painter.restore(); 
    } 
}; 
関連する問題