[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