0

こんにちは、みんな、

qtを使用してImageViewerを開発したくありません。大きな画像をスケーリングしてサイズを変更しようとしています。私の問題は、画面の向きを変更すると画像の一部が切り取られ、画像を横向きモードで開くと、縦向きモードに戻してもデフォルトで画像のサイズが小さいままになることです。私は何を間違っていますか?

私を助けてください。私が書いたコードはheresです

ImageViewer::ImageViewer() { setAttribute(Qt::WA_DeleteOnClose); QAction *back = new QAction(this); back->setText(QString("Back")); connect(back,SIGNAL(triggered()),this,SLOT(close())); back->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 画像 = reader.read(); imageLabel->setPixmap(QPixmap::fromImage(画像)); imageLabel->adjustSize(); }

4

1 に答える 1

0

QLabelのresizeEventを再実装するか、イベントフィルターをインストールして、そこでQResizeEventを処理する必要があります。showImageメソッドのコンテンツは、サイズ変更イベントのハンドラーに移動する必要があります。現在、ImageViewerウィジェット(QMainWindowから派生しているようです)のsize()を使用していますが、imageLabel.size()を使用することをお勧めします。または、将来UIレイアウトを変更する場合に問題を防ぐため、最適なQResizeEvent :: size()。

于 2011-04-12T09:13:51.347 に答える