QGraphicsScene 清晰显示
Posted
技术标签:
【中文标题】QGraphicsScene 清晰显示【英文标题】:QGraphicsScene clear display 【发布时间】:2012-09-03 10:42:45 【问题描述】:我是新来的,我无法解决这个问题。 我有一个 QGraphicScene (它首先初始化一个笛卡尔平面),它使用 AddLine \ ecc 方法绘制点 \ 线。一切正常。但我想要一个删除场景上绘制的所有“对象”并重新加载的方法笛卡尔平面。有什么建议吗?
在这里你可以找到我的课程:
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));
【问题讨论】:
【参考方案1】:清理场景,你试过clear的方法吗?
如果你想清除和重绘,我建议你将绘图代码从你的构造函数移动到一个方法中。 然后你可以调用 clear 然后你的绘图方法。
希望对你有帮助
【讨论】:
以上是关于QGraphicsScene 清晰显示的主要内容,如果未能解决你的问题,请参考以下文章
在 QGraphicsView/QGraphicsScene 上显示一系列图像
QT 在 QGraphicsScene 上方显示一个 QWidget
尝试在 QGraphicsScene 和 QGraphicsView 中显示 opencv 视频,但没有显示