使用Qt更改方向时图像被剪裁

时间:2011-04-12 04:47:43

标签: image qt viewer

全部,

我想用qt开发一个ImageViewer。我试图通过缩放它们来调整大图像的大小。我的问题是,当我改变屏幕方向时,图像的某些部分会被剪裁,如果我以横向模式打开图像,默认情况下,即使我改回肖像模式,图像的大小仍然很小。我做错了什么?

请帮帮我。继承了我写的代码数据

图像浏览器::图像浏览器() {     的setAttribute(Qt的:: WA_DeleteOnClose);     QAction * back = new QAction(this);     背>的setText(QString的( “返回”));     连接(背部,SIGNAL(触发()),这一点,SLOT(接近()));     背> setSoftKeyRole(的QAction :: PositiveSoftKey);     的addAction(背面);

imageLabel = new QLabel();
imageLabel->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
imageLabel->setAlignment(/*Qt::AlignLeft|*/Qt::AlignCenter);
QWidget *widget = new QWidget;
layout=new QStackedLayout();
layout->addWidget(imageLabel);
widget->setLayout(layout);
setCentralWidget(widget);

}

void ImageViewer :: showImage(QString filePath)  {      QImageReader阅读器;      reader.setFileName(文件路径);      QSize imageSize = reader.size();      imageSize.scale(size(),Qt :: KeepAspectRatio);      reader.setScaledSize(IMAGESIZE);      QImage image = reader.read();      imageLabel-> setPixmap(的QPixmap :: fromImage(图像));      imageLabel-> adjustSize();   }

1 个答案:

答案 0 :(得分:0)

您应该重新实现QLabel的resizeEvent或安装事件过滤器并在那里处理QResizeEvent showImage方法的内容应该转到resize事件的处理程序。 目前你正在使用ImageViewer小部件的size()(似乎是从QMainWindow派生的),最好使用imageLabel.size();或者最好的QResizeEvent :: size(),如果你将来改变UI布局,这将防止出现问题。