[Interest] QSplitter + QScrollArea + QWidgetStack issues
maitai at virtual-winds.org
maitai at virtual-winds.org
Fri Mar 28 07:34:04 CET 2014
Hello,
I was faced with a similar exercice and solved if that way:
void Util::setDialogSize(QDialog *dialog)
{
QDesktopWidget * desktopWidget = QApplication::desktop();
QRect screenRect = desktopWidget->screenGeometry();
dialog->setMaximumHeight(screenRect.height()-50);
dialog->setMaximumWidth(screenRect.width()-20);
QList<QScrollArea *> scrolls=dialog->findChildren<QScrollArea
*>(QString(),Qt::FindDirectChildrenOnly);
if(!scrolls.isEmpty())
{
QScrollArea * scrollarea=scrolls.at(0);
int ws=scrollarea->horizontalScrollBar()->height();
int ws1=scrollarea->verticalScrollBar()->height();
ws=qMin(ws,ws1);
scrollarea->setWidgetResizable(true);
scrollarea->widget()->adjustSize();
QSize s =
QSize(scrollarea->widget()->sizeHint().width()+ws,scrollarea->widget()->sizeHint().height()+ws);
if(s.height()>dialog->maximumHeight())
s.setHeight(dialog->maximumHeight());
if(s.width()>dialog->maximumWidth())
s.setWidth(dialog->maximumWidth());
dialog->resize(s);
}
}
My case is a bit different because the QScrollArea is always at the top
of the dialog.
I agree it it would be better to have something cleaner in qt to do
that.
Regards,
Philippe Lelong
Le 28-03-2014 05:01, Scott Aron Bloom a écrit :
> I have a dialogbox, with a vertical QSplitter as the top level layout..
> on the left goes a QTreeWidget, on the right a QScrollArea
>
> Inside the QScrollArea, there is a QWidgetStack in which multiple widgets are stacked.
>
> Here is my problem, when it first comes up, I want the right hand side, to work as if the scroll area was not there. Essential, just the stacked widget. The user can then minimize and see the scroll bars.
>
> I was hoping to use
> scrollArea->maximumViewportSize(), but its not correct (too small).
>
> Its laid out with Designer, so I don't believe it's a layout issue.. It works fine, except for the initial size.
>
> To "kind" of get it to work, I go over each widget in the stacked widget, get the minimumSizeHint, I compute the largest combination of them. Then I pad for the splitter width + the calculated minimum size of the tree. Then I pad for the other widgets (a dialog button box outside the splitter etc etc)
>
> But I just have to think, there should be some function somewhere, that I can call on a QScrollArea and say, find me an area that has no scroll bars, and use that as your initial size, and expand your parent widget.
>
> Thanks in advance..
>
> Scott
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest [1]
Links:
------
[1] http://lists.qt-project.org/mailman/listinfo/interest
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20140328/fc5b1a6d/attachment.html>
More information about the Interest
mailing list