画像の縦横比を保持するスケーラブルな画像ウィジェットを qt クリエーターで実装しようとしています。私が見つけたすべての例または投稿は、QLabel を拡張して resizeEvent を再実装することを提案しています。これは私が行ったことであり、ほとんど機能しますが、いくつかの問題があります。
メイン ウィンドウを最初に開くと、画像がわずかに大きくなり、メイン ウィンドウのサイズが大きくなります (これはそれほど大きな問題ではありません)。
ウィンドウを最大化するとすべての画像が拡大されますが、ウィンドウの最大化を解除すると画像が縮小されません。
QLabel サブクラス (ClickableImage と呼ばれる) と、ClickableImage を含むレイアウトを保持する親ウィジェットの両方の resizeEvents を変更しようとしました。関連するコードの一部を次に示します。
void ClickableImage::resizeEvent(QResizeEvent *e)
{
qDebug() << "Resizing : " << ticker;
ticker++;
int w = e->size().width();
int h = e->size().height();
qDebug() << "W : " << w;
qDebug() << "H : " << h;
image = QPixmap(fname);
image = image.scaled(w-7, h-7, Qt::KeepAspectRatio);
setPixmap(image);
}
また、次のソースを読みました。
Qt:縦横比を維持しながら QPixmap を含む QLabel のサイズを変更する
https://docs.huihoo.com/qt/4.2/desktop-screenshot.html
ありがとう。