nprogram’s blog

気ままに、プログラミングのトピックについて書いていきます

Qtで、画像をLabelに埋め込む方法 [Qt]

作成環境について

Qt Creator 4.3.1で、以下の設定で、プロジェクトを作成しております。以下の設定でクラス名、cppファイル名、hファイル名はすべてデフォルトを使用しています。

  • Qtウィジェットアプリケーション
  • 基底クラスは、QMainWindows
  • フォームを生成する

Labelに画像を埋め込む

  • mainwindow.uiに、Labelを設置したのみです f:id:nprogram:20170803060843p:plain

  • mainwindow.cppでQPixmpをインクルードしています。

#include <QPixmap>

f:id:nprogram:20170803060949p:plain

表示結果は以下のようになります。

f:id:nprogram:20170803061602p:plain

Labelに埋め込む画像を拡大表示する

以下のように書き換えます。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPixmap>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QPixmap pix("C:/StudyQt/img/login.jpg");
    ui->label->setPixmap(pix.scaled(100, 100));
}

MainWindow::~MainWindow()
{
    delete ui;
}

表示結果は以下のようになりました。

f:id:nprogram:20170803062120p:plain

以下の動画の内容を参考に記載しました。

www.youtube.com

Labelのサイズを考慮して、縦横比を維持しながら、画像を拡大表示する

  • enum Qt::AspectRatioMode
    • Qt::KeepAspectRatio ⇒ サイズは、アスペクト比を維持し、所定の矩形内部できるだけ大きい矩形にスケーリングされます。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPixmap>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QPixmap pix("C:/StudyQt/img/login.jpg");
    int w = ui->label->width();
    int h = ui->label->height();
    ui->label->setPixmap(pix.scaled(w, h, Qt::KeepAspectRatio));
}

MainWindow::~MainWindow()
{
    delete ui;
}