Seite 1 von 1

QAbstractScrollArea Probleme

Verfasst: 9. Juli 2006 21:46
von Esleborn
Hi,
ich hab ein QAbstractScrollArea (genauer ein QAbstractItemView) innerhalb dessen ich ein (komplizierteres) Layout (QVBoxLayout) erstelle. Dieses Layout verbraucht nun mehr Platz, als das QAbstractScrollArea zur Verfügung stelt. Statt das (wie ich erwarten würde) nun die Scrolleigenschaft zum tragen kommt, passiert nichts... [sprich die Balken aktivieren sich nicht...] (vergleiche Anhang)

(gekürzter) Code:

Code: Alles auswählen

W_ItemView::W_ItemView ( QWidget *fp_parent )
: QAbstractItemView ( fp_parent )...
{
// deklarieren/definieren und füllen der childs

mpvb_main = new QVBoxLayout;
mphb_topItems = new QHBoxLayout;
mphb_buttons = new QHBoxLayout;

mp_text->setSizePolicy ( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding );
mp_icon->setSizePolicy ( QSizePolicy::Minimum, QSizePolicy::MinimumExpanding );
mp_table->setSizePolicy ( QSizePolicy::Minimum, QSizePolicy::MinimumExpanding );
mp_extras->setSizePolicy ( QSizePolicy::Expanding, QSizePolicy::Expanding );

mphb_buttons->addWidget ( mp_hear_button, 1 );
mphb_buttons->addWidget ( mp_wishList_button, 1 );
mphb_buttons->addWidget ( mp_getIt_button, 1 );

mphb_topItems->addLayout ( mp_icon, 2 );
mphb_topItems->addLayout ( mp_desc, 2 );

mpvb_main->addWidget ( mp_title, 0/*, Qt::AlignCenter*/ );
mpvb_main->addLayout ( mphb_topItems, 1 );


mpvb_main->addWidget ( mp_text, 2  ); // Der Lange Text aus den Bildern
mpvb_main->addWidget ( mp_extras, 2 );
mpvb_main->setSizeConstraint ( QLayout::SetFixedSize );
viewport ( )->setLayout ( mpvb_main );
}

Danke für eure Hilfe

Elgrimm Esleborn

Verfasst: 9. Juli 2006 22:02
von upsala
Wenn ich mich nicht täusche, muß man bei der QAbstractScrollArea die Scrollbars selbst ein bißchen managen. Schau dir dazu mal das PieView-Beispiel an.

Verfasst: 10. Juli 2006 19:28
von Esleborn
mmh das Problem hab ich jetzt gelöst... kann mir einer sagen, wie ich ein QTextBrowser OHNE Scrollleisten beokmme (also nicht das die Scrollleisten nicht angezeigt werden, sondern dass er sich so vergrößert, dass sie nciht benötigt werden...)
PS: das hier tut nicht gut genug...

Verfasst: 10. Juli 2006 20:54
von upsala
hmm, QTextBrowser -> QTextEdit -> QTextEdit::document() -> QTextDocument -> QTextDocument::size() -> ungetestet ;)

Verfasst: 10. Juli 2006 21:45
von Esleborn
thx. Bin jetzt auf folgende (scheinbar gehende) Lösung gekommen:

Code: Alles auswählen

if ( verticalScrollBar ( )->maximum ( ) + viewport ( )->height ( ) < minimumHeight ( ) - 5 )
   setMinimumHeight ( verticalScrollBar ( )->maximum ( ) + viewport ( )->height ( ) );
else if ( verticalScrollBar ( )->maximum ( ) + viewport ( )->height ( ) > minimumHeight ( ) )
   setMinimumHeight ( verticalScrollBar ( )->maximum ( ) + viewport ( )->height ( ) );
immer wenn resized wird oder der Text geändert wird...

Verfasst: 29. Februar 2008 14:28
von maximAL
hallo,
ich muss den thread nochmal ausgraben weil ich gern die lösung für das layout-problem wüsste ;-)

ich habe auch ein QAbstractItemView, dessen viewport ein widget enthält. dieses stellt die daten des models dar und kann dynamisch die größe ändern.
problem nun: ich muss die scrollbalken auf die passende größe setzen. aber wie wird der QAbstractItemView darüber informiert, dass sich die größe des widgets (nicht des viewports!) geändert hat?

Verfasst: 29. Februar 2008 18:40
von upsala
Es gibt bei den Examples ein DiagramView. Das könntest du dir dazu mal ansehen.