2011-04-12 5 views
0

HI all、Qtを使用して向きを変更している間に画像がクリップされる

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

私を助けてください。書き込まれたコードを返します。

ImageViewer :: ImageViewer() { setAttribute(Qt :: WA_DeleteOnClose); QAction *戻る=新しいQAction(これ); 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); 

}

空隙ImageViewerの:: showImage(QStringのfilePathに) {QImageReaderリーダー。 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(); }

答えて

0

あなたはQLabelのresizeEventを再実装またはそれにイベントフィルタをインストールし、showImage方法の内容はサイズ変更イベントのハンドラに行くべきそこ QResizeEventを処理する必要があります。 現在ImageViewerウィジェット(QMainWindowから派生しているようです)のsize()を使用していますので、imageLabel.size()を使用する方が良いでしょう。または最適なQResizeEvent :: size()を使用すると、将来UIレイアウトを変更する場合に問題が発生しなくなります。

+0

私は申し訳ありませんが、私はそれを理解していないと言う必要があります。あなたはそれのためのeaxmpleを与えることができますか? – prakashpun

関連する問題