• 7593阅读
  • 0回复

如何在一个QScrollArea里的label显示图像? [复制链接]

上一主题 下一主题
离线wzq1988china
 
只看楼主 倒序阅读 楼主  发表于: 2010-10-03
— 本帖被 XChinux 执行加亮操作(2010-10-21) —
把一个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(),每次显示的图片都略大于视口的大小(毕竟这次是以外部的大小缩放的),
不知道大家有什么好的方法没?

描述:源代码
附件: ImageLabel.zip (267 K) 下载次数:66
快速回复
限100 字节
 
上一个 下一个