QAbstractScrollArea Probleme

Alles rund um die Programmierung mit Qt
Antworten
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

QAbstractScrollArea Probleme

Beitrag 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
Dateianhänge
Scrollbarpolicy: AsNeeded
Scrollbarpolicy: AsNeeded
Scrollbar_AsNeeded.jpg (141.88 KiB) 4001 mal betrachtet
Scrollbarpolicy: AlwaysOn
Scrollbarpolicy: AlwaysOn
Scrollbar_AlwaysOn.jpg (138.78 KiB) 4001 mal betrachtet
Glaube an eine Lösung, nur dann kannst du auch eine finden.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag 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...
Glaube an eine Lösung, nur dann kannst du auch eine finden.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

hmm, QTextBrowser -> QTextEdit -> QTextEdit::document() -> QTextDocument -> QTextDocument::size() -> ungetestet ;)
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag 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...
Glaube an eine Lösung, nur dann kannst du auch eine finden.
maximAL
Beiträge: 1
Registriert: 29. Februar 2008 13:58

Beitrag 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?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Es gibt bei den Examples ein DiagramView. Das könntest du dir dazu mal ansehen.
Antworten