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

Image 使用Qt更改方向时图像被剪裁,image,qt,viewer,Image,Qt,Viewer,大家好 我想用qt开发一个ImageViewer。我试图通过缩放来调整大图像的大小。我的问题是,当我更改屏幕方向时,图像的某些部分会被剪裁,而且如果我以横向模式打开图像,默认情况下,即使我更改回纵向模式,图像的大小仍然很小。我做错了什么 请帮帮我。这是我写的代码 ImageViewer::ImageViewer() { setAttribute(Qt::WA_DeleteOnClose); QAction*back=新QAction(本); back->setText(QString(“back

大家好

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

请帮帮我。这是我写的代码

ImageViewer::ImageViewer() { setAttribute(Qt::WA_DeleteOnClose); QAction*back=新QAction(本); back->setText(QString(“back”); 连接(背面,信号(已触发()),此,插槽(关闭()); back->setSoftKeyRole(QAction::PositiveSoftKey); 添加动作(背面)

}

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

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

很抱歉,我不得不说我不理解它。你能给我举个例子吗?
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);