web-dev-qa-db-ja.com

QtGuiでQImageを表示する

私はQtが初めてで、ボタンをクリックすると画像を表示するシンプルなGUIアプリケーションを作成しようとしています。

QImageオブジェクトの画像を読み取ることができますが、QImageを入力として取得して表示するQt関数を呼び出す簡単な方法はありますか?

40
Karim

おかげで、私はそれを行う方法を見つけました。これはデイブとセルゲイと同じです:

私はQT Creatorを使用しています:

メインGUIウィンドウで、ドラッグドロップGUIを使用して作成し、ラベルを作成します(例:「myLabel」)

(クリックされた)ボタンのコールバックで、ユーザーインターフェイスウィンドウへの(* ui)ポインターを使用して以下を実行します。

void MainWindow::on_pushButton_clicked()
{
     QImage imageObject;
     imageObject.load(imagePath);
     ui->myLabel->setPixmap(QPixmap::fromImage(imageObject));

     //OR use the other way by setting the Pixmap directly

     QPixmap pixmapObject(imagePath");
     ui->myLabel2->setPixmap(pixmapObject);
}
6
Karim

QImageの表示方法を示すシンプルですが完全な例は、次のようになります。

#include <QtGui/QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QImage myImage;
    myImage.load("test.png");

    QLabel myLabel;
    myLabel.setPixmap(QPixmap::fromImage(myImage));

    myLabel.show();

    return a.exec();
}
67
Palmik

QLabelを使用して画像を描画することは、私にとっては少し厄介に思えます。 Qtの新しいバージョンでは、QGraphicsViewウィジェットを使用できます。 Qt Creatorで、Graphics ViewウィジェットをUIに追加し、名前を付けます(以下のコードではmainImageという名前です)。 mainwindow.h、次のようなものをprivate変数としてMainWindowクラスに追加します。

QGraphicsScene *scene;
QPixmap image;

次に、mainwindow.cppそしてコンストラクタを次のようにします:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    image.load("myimage.png");
    scene = new QGraphicsScene(this);
    scene->addPixmap(image);
    scene->setSceneRect(image.rect());

    ui->mainImage->setScene(scene);
}
23
Scott Griffiths

一般的な方法の1つは、QLabel::setPixmap()を使用してQLabelウィジェットに画像を追加し、他のウィジェットと同様にQLabelを表示することです。例:

#include <QtGui>

int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  QPixmap pm("your-image.jpg");
  QLabel lbl;
  lbl.setPixmap(pm);
  lbl.show();
  return app.exec();
}
12
Dave Mateer

私の知る限り、QPixmapは画像の表示に、QImageは画像の読み取りに使用されます。 QImageから変換するQPixmap::convertFromImage()およびQPixmap::fromImage()関数があります。

3
Sergei Tachenov