#include <QtGui>
int main(int argc, char *argv[])
{
int noItems =10000;
int xSize = 1600;
int ySize = 900;
qsrand
(QTime::currentTime().
msec());
QElapsedTimer t;
t.start();
QGraphicsScene scene
(0,
0,xSize,ySize
);
// put some other items in the scene i
= scene.
addRect(300,
300,
160,
90,
QPen(),
QBrush(Qt
::yellow));
for(int i=0;i<noItems;++i){
if(!(i%1333)){
item->setZValue(2);
item
->setText
(QString("Really High Z-Item #%1").
arg(i
));
item
->setBrush
(QBrush(Qt
::red));
}
else if(!(i % 133)) {
item->setZValue(1);
item
->setText
(QString("High Z-Item #%1").
arg(i
));
item
->setBrush
(QBrush(Qt
::magenta));
}
else item
->setText
(QString("Item #%1").
arg(i
));
scene.addItem(item);
item->setPos(qrand()%(xSize-75),qrand()%(ySize-10));
}
qDebug() << "populate scene" << t.elapsed();
QList<QGraphicsItem *> list = scene.items(); // ordered by zValue - hides items underneath higher zValue items first
int visible =10000;
//++visible;
if(itemByZ
->isVisible
() && itemByZ
->type
()==QGraphicsSimpleTextItem::Type){ // Don't check non-QGraphicsSimpleTextItems QList<QGraphicsItem *> itemsUnderList = scene.items(itemByZ->mapToScene(itemByZ->boundingRect()));
itemUnder->hide(); //Don't hide non-QGraphicsSimpleTextItems
--visible;
}
}
}
qDebug() << "Finished" << t.elapsed() << "visible"<< visible;
view.setScene(&scene);
view.show();
view1.setSceneRect(0,0,250,250);
view1.setScene(&scene);
view1.show();
return a.exec();
}
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
int noItems =10000;
int xSize = 1600;
int ySize = 900;
qsrand(QTime::currentTime().msec());
QElapsedTimer t;
t.start();
QGraphicsScene scene(0,0,xSize,ySize); // put some other items in the scene
QGraphicsItem *i = scene.addEllipse(600,600,150,150,QPen(),QBrush(Qt::cyan));
i->setFlag(QGraphicsItem::ItemIsMovable);
i = scene.addRect(300,300,160,90,QPen(),QBrush(Qt::yellow));
i->setFlag(QGraphicsItem::ItemIsMovable);
for(int i=0;i<noItems;++i){
QGraphicsSimpleTextItem *item = new QGraphicsSimpleTextItem;
if(!(i%1333)){
item->setZValue(2);
item->setText(QString("Really High Z-Item #%1").arg(i));
item->setBrush(QBrush(Qt::red));
}
else if(!(i % 133)) {
item->setZValue(1);
item->setText(QString("High Z-Item #%1").arg(i));
item->setBrush(QBrush(Qt::magenta));
}
else item->setText(QString("Item #%1").arg(i));
scene.addItem(item);
item->setFlag(QGraphicsItem::ItemIsMovable);
item->setPos(qrand()%(xSize-75),qrand()%(ySize-10));
}
qDebug() << "populate scene" << t.elapsed();
QList<QGraphicsItem *> list = scene.items(); // ordered by zValue - hides items underneath higher zValue items first
int visible =10000;
foreach(QGraphicsItem *itemByZ, list){
//++visible;
if(itemByZ->isVisible() && itemByZ->type()==QGraphicsSimpleTextItem::Type){ // Don't check non-QGraphicsSimpleTextItems
QList<QGraphicsItem *> itemsUnderList = scene.items(itemByZ->mapToScene(itemByZ->boundingRect()));
foreach(QGraphicsItem *itemUnder, itemsUnderList)
if(itemUnder->type()==QGraphicsSimpleTextItem::Type && itemUnder!=itemByZ){
itemUnder->hide(); //Don't hide non-QGraphicsSimpleTextItems
--visible;
}
}
}
qDebug() << "Finished" << t.elapsed() << "visible"<< visible;
QGraphicsView view;
view.setScene(&scene);
view.show();
QGraphicsView view1;
view1.setSceneRect(0,0,250,250);
view1.setScene(&scene);
view1.show();
return a.exec();
}
To copy to clipboard, switch view to plain text mode
Bookmarks