1

私はここに新しく、このことを解決できません。私は QGraphicScene (最初にデカルト平面を初期化します) を持っており、メソッド AddLine \ ecc.Everything でポイント \ ラインを描画します。しかし、シーンに描画されたすべての「オブジェクト」を削除し、デカルト平面。何か提案はありますか?

ここで私のクラスを見つけることができます:

class draw: public QWidget
{
    Q_OBJECT

private:

    QGraphicsScene scene;
    int x1;
    int y1;
    int x2;
    int y2;

public:
    disegna (QWidget *parent = 0);
    void setdot(QString,QString);
    void setsegment(QString,QString,QString,QString);
    ~disegna(){}
    };

draw::draw(QWidget *parent) : QWidget(parent) { 
    scene.setBackgroundBrush(Qt::white);
    scene.addRect(QRectF(0,0, 600, 200));
    scene.addLine(0, 100 ,600, 100);
    scene.addLine(300, 0 ,300, 200);
    scene.addEllipse(297.5,97.5,5,5,QPen(), QBrush(Qt::red));

    int i=0;
    for (int a=0;a<120;a++) {
        scene.addLine(i+5, 98 ,i+5, 102);
        i=i+5;
    }

    int j=0;
    for (int a=0;a<40;a++) {
        scene.addLine(298,j+5,302,j+5);
        j=j+5;
    }

    QGraphicsView * view = new QGraphicsView(&scene,this);
    view->show();
}

void draw::setdot(QString x1,QString y1){
    scene.addEllipse(x1.toInt()+298, 98-y1.toInt(),4,4,QPen(), QBrush(Qt::blue));
}

void draw::setsegment(QString x1,QString y1,QString x2,QString y2) {
    scene.addLine(x1.toInt()+300, 100-y1.toInt(),x2.toInt()+300, 100-y2.toInt(),QPen());
    scene.addEllipse(x1.toInt()+298, 100-y1.toInt(),4,4,QPen(), QBrush(Qt::blue));
    scene.addEllipse(x2.toInt()+298, 100-y2.toInt(),4,4,QPen(), QBrush(Qt::blue));
}
4

1 に答える 1

3

シーンをきれいにするために、クリアメソッドを試しましたか?

クリアして再描画する場合は、描画コードをコンストラクターからメソッドに移動することをお勧めします。次に、 clear を呼び出してから描画メソッドを呼び出すことができます。

それが役に立てば幸い

于 2012-09-03T10:55:44.423 に答える