添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

对单个的Item移动需要鼠标移动事件,2步设置:

1、setFlags(ItemIsSelectable | ItemIsMovable);

2、void mouseMoveEvent(QMouseEvent* event)

QGraphicsView::mouseMoveEvent(event);

对整体Item的移动

我原来的做法效率很慢,原来的思路是把所有的Item放进一个组内,对组实现上面的鼠标移动。

正确的做法是:

QGraphicsView:: setDragMode(QGraphicsView::ScrollHandDrag); //将鼠标变成小手,这样就能拖动了

QGraphicsView ::setInteractive(false);//是否能够选中单独的Item

备注:在写demo的时候,如果只写几个Item,是看不出移动效果的,需要大量的item

int xx = 0;
for (int i = -11000; i < 11000; i += 110) {
++xx;
int yy = 0;
for (int j = -7000; j < 7000; j += 70) {
++yy;
qreal x = (i + 11000) / 22000.0;
qreal y = (j + 7000) / 14000.0;

QGraphicsLineItem *item = new QGraphicsLineItem(10, 10, 20, 20);
item->setPos(QPointF(i, j));
this->scene()->addItem(item);
}
}

需求:我在QGraphicsView上面new出了10000多个Item,需要对视图做整体的移动和缩放。qt替我们实现了移动和缩放的功能,就是不好找。。解决:一、对单个的Item移动需要鼠标移动事件,2步设置:1、setFlags(ItemIsSelectable | ItemIsMovable);2、void mouseMoveEvent(QMouseEvent* e
Qt在绘制point的时候,一般都直接调用addPoint()函数,但是在point数量达到一定程度的时候,会发生很严重的卡顿现象,比如,绘制10w个point,绘制100w个point(point的无序的) 以10w个point为测试, QTime time; time.start(); for(int i=0;i&amp;lt;100000;i++){ image = new QImage(); QString path=QFileDialog::getOpenFileName(this,"open","../","Image files (*.bmp *.jpg *.pbm *.pgm *.png *.ppm *.xbm *.xpm)"); if(!path.isEmpty