Ceci est probablement quelque chose de très évident, mais j'ai un nouveau Qt et ne peux pas le comprendre. J'ai une MainWindow simple qui a un bouton. Lorsque ce bouton est cliqué, je veux créer un QGraphicsScene, ajouter quelques lignes et ensuite montrer dans la fenêtre. Cependant quand je cours ce code dans une fenêtre il n'apparaît pas. MAIS, si je l'exécute comme QApplication, il se montre très bien. Qu'est-ce que je rate?Pourquoi mon QGraphicsView n'apparaît-il pas dans ma MainWindow en Qt4?
Voici le code dans le MainWindow:
void TheDrawings::drawScene() {
qDebug() << "Setting up Scene";
QGraphicsScene scene(QRect(-50, -50, 400, 200));
QPen pen(Qt::red, 3, Qt::DashDotDotLine);
QGraphicsRectItem *rectItem = new QGraphicsRectItem(QRect(-50, -50, 400,
200), 0, &scene);
rectItem->setPen(pen);
rectItem->setBrush(Qt::gray);
QGraphicsSimpleTextItem *textItem = new QGraphicsSimpleTextItem(
"Amit Bahree", 0, &scene);
textItem->setPos(50, 0);
QGraphicsEllipseItem *eclipseItem = new QGraphicsEllipseItem(QRect(170, 20,
100, 75), 0, &scene);
eclipseItem->setPen(QPen(Qt::darkBlue));
eclipseItem->setBrush(Qt::darkBlue);
QGraphicsPolygonItem *polygonItem = new QGraphicsPolygonItem(QPolygonF(
QVector<QPointF>() << QPointF(10, 10) << QPointF(0, 90)
<< QPointF(40, 70) << QPointF(80, 110) << QPointF(70, 20)),
0, &scene);
polygonItem->setPen(QPen(Qt::darkGreen));
polygonItem->setBrush(Qt::yellow);
qDebug() << "Setting up the view";
QGraphicsView view;
view.setScene(&scene);
view.show();
}
pas sûr que vous avez réellement besoin d'un parent pour la vue, mais vous devez certainement alloué sur le tas (c'est-à-dire nouveau). – e8johan
Salut les gars, parfait qui a fonctionné. Je pense que je comprends ce qui ne va pas - comme ce n'était pas sur le tas, il était nettoyé avant qu'il puisse repeindre. e8johan, si je ne mets pas le parent, alors il apparaît comme un nouveau widget et j'ai deux fenêtres au lieu d'une. Je pense que je pourrais avoir besoin d'installer un autre widget de conteneur pour cela. – bahree