2015-10-08 1 views
0

Quelqu'un peut-il m'aider à comprendre comment le QGraphicsView fonctionne dans un QVBoxlayout?QGraphics Voir la disposition

Je héritez d'une classe de QWidget et le code suivant fonctionne comme prévu quand il est affiché:

m_mainVBoxLayout=new QVBoxLayout; 
this->setLayout(m_mainVBoxLayout); 
QWidget *testWidget=new QWidget(); 
testWidget->setAutoFillBackground(true); 
m_mainVBoxLayout->addWidget(testWidget); 
QWidget *testWidget2=new QWidget(); 
testWidget2->setAutoFillBackground(true); 
m_mainVBoxLayout->addWidget(testWidget2); 

Lorsque je l'exécute l'écran est divisé verticalement et il y a deux cases grisées pour les Widgets de test comme prévu .

Mais si je retire testWidget2 code et le remplacer par:

QGraphicsView *view=new QGraphicsView(); 
m_mainVBoxLayout->addWidget(view); 

La mise en page est foiré dans que je ne vois pas la case ombragée pour testWidget. J'ai même essayé de créer une scène et de l'ajouter à la vue en vain. Des idées pour lesquelles cela se produit?

Répondre

0

je dois apprendre à mieux lire (Qt Documentation)

Vous devez utiliser la méthode viewport() de QGraphicsView pour obtenir le QWidget par défaut associé.

m_mainVBoxLayout-> addWidget (view-> viewport());

résout le problème.