把一个
QLabel放入QScrollArea里,要让
图片以适合
窗口并且保持图片本省比例的形式显示图片?
如果是采用以下代码:
/*!
* @fn void ImageLabel::scaleLabel( double factor)
* @brief 按照设置好的
缩放比例缩放
图像 */
void ImageLabel::scaleLabel()
{
Q_ASSERT( this->pixmap());
this->resize( newSize);
}
/*!
* @fn void ImageLabel::fitToWindow()
* @brief 设置图像大小为适合窗口
*/
void ImageLabel::fitToWindow()
{
Q_ASSERT( this->pixmap());
newSize=this->pixmap()->size();
newSize.scale( scrollArea->viewport()->size(), Qt::KeepAspectRatio);
scaleLabel();
}
但我先让图片以原始大小的形式显示(图片大小大于QScrollArea),然后再以适合窗口的形式显示,显示的图片大小却小于QSrollArea的大小,然后再次以适合窗口的形式显示,才真正的适合窗口,我调试过发现 scrollArea->viewport()->size()返回的大小不一样
但如果把这句代码换成 scrollArea->size(),每次显示的图片都略大于视口的大小(毕竟这次是以外部的大小缩放的),
不知道大家有什么好的方法没?