2016-11-16 1 views
1

Je souhaite insérer une instance Q3DScatter dans l'un de mes formulaires. Je suis en mesure de construire le graphique et l'afficher avec:Ajout d'un Q3DScatter à un formulaire QDialog existant

Q3DScatter *graph = new Q3DScatter(); 
QWidget *container = QWidget::createWindowContainer(graph); 

...do some graph stuff... 

container.show() 

Cela crée avec succès le graphique et il montre dans sa propre fenêtre/conteneur. Je voudrais maintenant le placer sous une autre forme qui a été conçue en qt-creator. J'ai placé un vide widget sur le formulaire (QDialog) comme un espace réservé, mais je suis incapable de déplacer le Q3DScatter dans le widget.

Je vois Q3DScatter::Q3DScatter(const QSurfaceFormat *format = Q_NULLPTR, QWindow *parent = Q_NULLPTR) dans la documentation, mais je n'ai pas un parent QWindow pour l'attacher à, comme la forme que je voudrais ajouter à une QDialog ...

Je suis très nouveau pour widgets en général , alors s'il vous plaît corrigez-moi si c'est la mauvaise approche.

Répondre

1

Ajoutez le conteneur en tant qu'enfant de la boîte de dialogue. Mettez dans une mise en page si vous avez besoin de redimensionner lorsque la boîte de dialogue est redimensionnée. Exemple:

MyDialog::MyDialog(Q3DScatter *scatter, QWidget *parent) : QDialog(parent) 
{ 
    QHBoxLayout * const l = new QHBoxLayout(this); 
    l->setMargin(0); 
    l->addWidget(QWidget::createWindowContainer(scatter, this); 
}