Hmm... Method presented above wasn't best way to solve described problem... 
Below I present working adjustDescription method:
void DetailsView::adjustDescription()
{
if (iDescBox->isVisible())
{
QMargins margs = iDescBox->layout()->contentsMargins();
QMargins amargs = widget()->layout()->contentsMargins();
qreal lineWidth = viewport()->width()
- margs.left() - margs.right() - amargs.right()
- amargs.left() - doc->documentMargin()*2;
doc
->setPageSize
(QSizeF(lineWidth,
-1));
int boxHeight = doc->documentLayout()->documentSize().toSize().height()
+ margs.bottom() + margs.top() + 50 + 4;
if ( iDescBox->y() + boxHeight > viewport()->height()
&& !verticalScrollBar()->isVisible())
{
lineWidth -= verticalScrollBar()->width();
doc
->setPageSize
(QSizeF(lineWidth,
-1));
}
int newHeight = doc->documentLayout()->documentSize().toSize().height();
boxHeight = newHeight + margs.bottom() + margs.top() + 50 + 4;
iDescription->viewport()->setMinimumSize(lineWidth,newHeight);
iDescription->viewport()->setMaximumSize(lineWidth,newHeight);
iDescription->setMinimumSize(lineWidth, newHeight);
iDescription->setMaximumSize(lineWidth, newHeight);
iDescBox->setMinimumSize(lineWidth + doc->documentMargin()*2,
boxHeight);
iDescBox->setMaximumSize(lineWidth + doc->documentMargin()*2,
boxHeight);
}
}
void DetailsView::adjustDescription()
{
if (iDescBox->isVisible())
{
QMargins margs = iDescBox->layout()->contentsMargins();
QMargins amargs = widget()->layout()->contentsMargins();
QTextDocument* doc = iDescription->document();
qreal lineWidth = viewport()->width()
- margs.left() - margs.right() - amargs.right()
- amargs.left() - doc->documentMargin()*2;
doc->setPageSize(QSizeF(lineWidth,-1));
int boxHeight = doc->documentLayout()->documentSize().toSize().height()
+ margs.bottom() + margs.top() + 50 + 4;
if ( iDescBox->y() + boxHeight > viewport()->height()
&& !verticalScrollBar()->isVisible())
{
lineWidth -= verticalScrollBar()->width();
doc->setPageSize(QSizeF(lineWidth,-1));
}
int newHeight = doc->documentLayout()->documentSize().toSize().height();
boxHeight = newHeight + margs.bottom() + margs.top() + 50 + 4;
iDescription->viewport()->setMinimumSize(lineWidth,newHeight);
iDescription->viewport()->setMaximumSize(lineWidth,newHeight);
iDescription->setMinimumSize(lineWidth, newHeight);
iDescription->setMaximumSize(lineWidth, newHeight);
iDescBox->setMinimumSize(lineWidth + doc->documentMargin()*2,
boxHeight);
iDescBox->setMaximumSize(lineWidth + doc->documentMargin()*2,
boxHeight);
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks