0

大家好,

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

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

ImageViewer::ImageViewer() { setAttribute(Qt::WA_DeleteOnClose); QAction *back = new QAction(this); back->setText(QString("Back")); 连接(返回,信号(触发()),这个,SLOT(关闭()));返回->setSoftKeyRole(QAction::PositiveSoftKey); 添加操作(返回);

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; reader.setFileName(filePath); QSize imageSize = reader.size(); imageSize.scale(size(), Qt::KeepAspectRatio); reader.setScaledSize(imageSize); QImage image = reader.read(); imageLabel->setPixmap(QPixmap::fromImage(image)); imageLabel->adjustSize(); }

4

1 回答 1

0

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

于 2011-04-12T09:13:51.347 回答