Hi,

sizeHint() is returning a valid sizeHint, regardless the scroll area's 
visibility:

QSize QAbstractScrollArea::sizeHint() const
{
    Q_D(const QAbstractScrollArea);
    if (!d->sizeHint.isValid() || d->sizeAdjustPolicy == 
QAbstractScrollArea::AdjustToContents) {
        const int f = 2 * d->frameWidth;
        const QSize frame( f, f );
        const QSize scrollbars( d->vbarpolicy == Qt::ScrollBarAlwaysOn ? 
d->vbar->sizeHint().width() : 0,
                                d->hbarpolicy == Qt::ScrollBarAlwaysOn ? 
d->hbar->sizeHint().height() : 0 );
        d->sizeHint = frame + scrollbars + viewportSizeHint();
    }
    return d->sizeHint;
}

If it's not valid (or the other comparison is true) it's getting calculated and 
saved. If the saved value is valid, it gets returned directly.


Christoph

12 jan 2012 kl. 16:11 skrev <jan-arve.saet...@nokia.com>:

> It's not quite right. sizeHint() should *always* (regardless of visibility) 
> return a sensible value.
> For the interested, further details can be seen in my comment in the patch.
>  
> regards,
> Jan-Arve
>  
> From: ext Christoph Schleifenbaum [mailto:christoph.schleifenb...@kdab.com] 
> Sent: 12. januar 2012 15:19
> To: Saether Jan-Arve (Nokia-MP/Oslo)
> Cc: development@qt-project.org
> Subject: Re: [Development] sizeHint for QAbstractScrollArea, especially item 
> views
>  
> Hi,
>  
> ok, I added a adjustSizePolicy property. Please have a look:
>  
> http://codereview.qt-project.org/12971
>  
> Cheers,
> Christoph
>  
> 11 jan 2012 kl. 12:09 skrev <jan-arve.saet...@nokia.com> 
> <jan-arve.saet...@nokia.com>:
> 
> 
> Yes, if you think this is mostly an issue on initial show, (which I also 
> think) then I think such a solution would acceptable.
> The default should then be AdjustToContentsOnFirstShow, as it is in QComboBox.
>  
> regards,
> Jan-Arve
>  
> From: ext Christoph Schleifenbaum [mailto:christoph.schleifenb...@kdab.com] 
> Sent: 10. januar 2012 17:19
> To: Saether Jan-Arve (Nokia-MP/Oslo)
> Cc: development@qt-project.org
> Subject: Re: [Development] sizeHint for QAbstractScrollArea, especially item 
> views
>  
> Hi,
>  
> thanks for your input. What do you think about adding some sizeHint policy to 
> this? I'm thinking about as it is done for QComboBox, i.e. AdjustToContents 
> vs. AdjustToContentsOnFirstShow. Translated to this use case would be to 
> never return any different sizeHint (and especially never call 
> updateGeometry()) after the scroll area is shown for the first time.
>  
> 6 jan 2012 kl. 14:20 skrev <jan-arve.saet...@nokia.com> 
> <jan-arve.saet...@nokia.com>:
> 
> 
> 
> Hi,
> I agree that the current behavior is sometimes not optimal, but I'm not sure 
> if this is such a good idea.
>  
> With regards to behavior it has some advantages, but I believe it also has 
> some disadvantages.
>  
> And since in addition it might introduce a performance penalty I'm leaning 
> towards that this is not a good idea.
>  
> I've made a comment on the patch in gerrit:
> http://codereview.qt-project.org/#change,11763
>  
>  
> Jan-Arve
>  
> From: development-bounces+jan-arve.saether=nokia....@qt-project.org 
> [mailto:development-bounces+jan-arve.saether=nokia....@qt-project.org] On 
> Behalf Of ext Christoph Schleifenbaum
> Sent: 22. desember 2011 18:07
> To: development@qt-project.org
> Subject: [Development] sizeHint for QAbstractScrollArea, especially item views
>  
> Hi,
> 
> currently, item views do return a rather random size hint. Some at KDAB, 
> including me, would love to see a size hint actually being related to the 
> scroll area's content. For this, we thought of a method viewportSizeHint 
> which returns the size of the viewport as if there would be no scroll bars 
> required.
> 
> The most common use case for this is a list or a table of data in a window:
> 
> a) The ui designer doesn't need to set a custom size for the view, the size 
> hint will make sure all data are visible
> 
> b) The amount of data might grow, in that case it might made sense to enlarge 
> the view. Imagine three tree views below each other inside a scroll area. If 
> the tree views would stay at their size, a scroll bar would appear in both 
> the tree view and in the surrounding scroll area. This won't happen with a 
> proper size hint combined with a size policy.
> 
> I'v attached a patch to the current qtbase.git. It does the described 
> behaviour for QScrollArea and QTableView. Try running the example at 
> examples/itemviews/spreadsheet to see what happens if you e.g. resize the 
> columns in the table view.
> 
> 
> Thoughts?
> 
> 
> Cheers,
> Christoph
> 
> 
> 
> --
> Christoph Schleifenbaum | christoph.schleifenb...@kdab.com | Software Engineer
> Klarälvdalens Datakonsult AB, a KDAB Group company
> Tel. Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)
> KDAB - Qt Experts - Platform-independent software solutions
> 
> _______________________________________________
> Development mailing list
> Development@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
>  
> --
> Christoph Schleifenbaum | christoph.schleifenb...@kdab.com | Software Engineer
> Klarälvdalens Datakonsult AB, a KDAB Group company
> Tel. Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)
> KDAB - Qt Experts - Platform-independent software solutions
>  
>  
> --
> Christoph Schleifenbaum | christoph.schleifenb...@kdab.com | Software Engineer
> Klarälvdalens Datakonsult AB, a KDAB Group company
> Tel. Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)
> KDAB - Qt Experts - Platform-independent software solutions
>  

--
Christoph Schleifenbaum | christoph.schleifenb...@kdab.com | Software Engineer
Klarälvdalens Datakonsult AB, a KDAB Group company
Tel. Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)
KDAB - Qt Experts - Platform-independent software solutions

_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to