2012-04-13 4 views
2

Betrachten wir folgende einfache Beispiel erstellt wird:QScrollArea Derivat ist leer, wenn es von einer .ui Datei

Area.hh

#pragma once 

class Area; 

#include <QScrollArea> 

class Area : public QScrollArea { 

    Q_OBJECT 

public: 

    Area (QWidget *_parent = 0); 
}; 

Area.cc

#include "main.hh" 
#include "Area.hh" 

#include <QLabel> 

Area::Area (QWidget *_parent) : 
    QScrollArea (_parent) 
{ 
    QLabel *label = new QLabel ("Show me please"); 
    setWidget (label); 
} 

Diese Schriftrolle Bereich sollte ein Etikett darin zeigen. Und es tut so gut, wenn Sie nur ein Bereichsobjekt erstellen und zeigen Sie es wie folgt aus:

Area *area = new Area(); 
area->show(); 

Wenn Sie jedoch einen QScrollArea mit Qt Creator hinzufügen und fördern es zu Area Klasse, dann zeigt es nichts drin und es gibt keine Bildlaufleisten Was kann ich tun, um es richtig zu zeigen?

Antwort

2

Qt Designer fügt ein leeres Widget innerhalb der QScrollArea hinzu und überschreibt Ihre.

Um dies zu verhindern, verwenden Sie eine Basis QWidget anstelle von QScrollArea und fördern Sie dieses Widget in eine Area Klasse. Der UI-Compiler von Qt wird es nicht als QScrollArea betrachten, so dass kein Aufruf an setWidget mehr generiert wird.

Verwandte Themen