PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QWidgetStack



TheDodger
22-06-2002, 08:33
Ich habe da ein klitzekleine ungereimtheit bei QWidgetStack ...
Ich habein einem KMainWindow ein einzelnen zentralen Frame erstellt.
Darin habe ich ein QWidgetStack plaziert.
Funktioniert auch soweit.

Jetzt möchte ich in den WidgetStack ein - vom Designer erzeugtes - ui File hinzufügen.
Wenn ich dieses nun mit 'optionals->raiseWidget( 0 );' anzeige, habe ich im oberen linken eck nur minimal etwas zu sehen.

Hier mal mein Codeschnipsel:


JargoContact::JargoContact( QWidget *parent, const char *name, int wflags )
: KMainWindow( parent, name, wflags )
{
setCentralWidget( new QWidget( this, "JargoCentralWidget" ) );
gridLayout = new QGridLayout( centralWidget(), 1, 1, 6, 6, "gridLayout");

QFrame* frame = new QFrame( centralWidget(), "frame" );
frame->setFrameShape( QFrame::StyledPanel );
frame->setFrameShadow( QFrame::Raised );

gridLayout->addWidget( frame, 0, 0 );

optionals = new QWidgetStack( frame );

optionals->setFrameShape( QFrame::StyledPanel );
optionals->setFrameShadow( QFrame::Raised );

ViewContacts* vContacts = new ViewContacts( optionals );
// EditContacts* eContacts = new EditContacts( optionals );

optionals->addWidget( vContacts, 0 );
// optionals->addWidget( eContacts, 1 );

vContacts->adjustSize();
// eContacts->adjustSize();

optionals->raiseWidget( 0 );
}


Wie kann ich es jetzt anstellen, das mein Widget innerhalb des WidgetStacks autom. in der Größe angepasst wird?
Ein GridLayout hinzufügen?

Hier bekomme ich dann einen SegFault:


gridLayout->addWidget( frame, 0, 0 );

QGridLayout* gridLayout2 = new QGridLayout( frame, 1, 1, 6, 6, "gridLayout2");

optionals = new QWidgetStack( (QWidget*)gridLayout2 );

micha
22-06-2002, 16:58
Hi,



Wie kann ich es jetzt anstellen, das mein Widget innerhalb des WidgetStacks autom. in der Größe angepasst wird?
Ein GridLayout hinzufügen?


Nein, ich würde das QWidget entfernen und Dein Frame als wirkliches zentrales Widget nehmen ;)



QFrame* frame = new QFrame( this, "frame" );
frame->setFrameShape( QFrame::StyledPanel );
frame->setFrameShadow( QFrame::Raised );

setCentralWidget( frame );

optionals = new QWidgetStack( frame );
optionals->setFrameShape( QFrame::StyledPanel );
optionals->setFrameShadow( QFrame::Raised );

QTextEdit* vContacts = new QTextEdit( optionals );
optionals->addWidget( vContacts, 0 );
vContacts->adjustSize();

optionals->raiseWidget( 0 );

gridLayout = new QGridLayout( frame, 1, 1, 6, 6, "gridLayout");
gridLayout->addWidget( optionals, 0, 0 );
gridLayout->activate();


Gruß micha

TheDodger
23-06-2002, 12:09
Danke, exact das hat funktioniert ...