bonjour,
Je realise une application permetant de visualiser des "sort" d'histogramme dans une qgraphicview.
J ai plusieur million de bars histogramme donc je ne veux pas tous les charger en meme temp dans ma scene.
J ai donc reimplementer une class myScene avec une capture de mouseeventmove, j ai fait un essai avec quelque histogramme et c est parfait ils se deplacent de gauche a droite.
PB si je depasse de la taille du widget qui contient ma scene, la scene augmente de taille. ( dans la doc de qt il est indiquet quelle me peux que croitre).J ai lu sur des forum qu il fallait gere les itemes avec leur posisiton au cas ou un item voudrais sortie de la zone visible.
C est ok seulement si je connais la taille de mon widget qui contient mon qgraphicview qui contient ma scene (les 2 premiers ou toujours la meme taille) MAis si je resize mon application la taille du widget change celle du qgraphicview aussi par le biais des layout,
L ui est cree avec Creator
Bar est en item custom
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class GraphicsScene:public QGraphicsScene { Q_OBJECT public: GraphicsScene(QObject *parent = 0); virtual void mouseMoveEvent ( QGraphicsSceneMouseEvent * mouseEvent ) ; };
Docn ici le PB est que dans iteme j ai pas acces a ui->fwidget->height() ou a ui->graphicsVieW->height ().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); scene = new GraphicsScene(this); ui->graphicsVieW->setScene(scene); for(int i =0;i<10;i++) { Histo*bar=new Histo; bar->setValues(10,40,70,4); bar->setPos(50+i*10,20+i*5); scene->addItem(bar); } } void MainWindow::on_pushButton_clicked() { qDebug()<<ui->graphicsVieW->height (); qDebug()<<ui->graphicsVieW->width (); qDebug()<<ui->fwidget->height(); qDebug()<<ui->fwidget->width(); qDebug()<<scene->sceneRect().height();; qDebug()<<scene->sceneRect().width();; qDebug()<<scene->height();; qDebug()<<scene->width();; }
je voie pas trop comemnt m en sortir.
merci!
Partager