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