私はQtが初めてで、ボタンをクリックすると画像を表示するシンプルなGUIアプリケーションを作成しようとしています。
QImage
オブジェクトの画像を読み取ることができますが、QImage
を入力として取得して表示するQt関数を呼び出す簡単な方法はありますか?
おかげで、私はそれを行う方法を見つけました。これはデイブとセルゲイと同じです:
私は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);
}
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();
}
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);
}
一般的な方法の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();
}
私の知る限り、QPixmap
は画像の表示に、QImage
は画像の読み取りに使用されます。 QImage
から変換するQPixmap::convertFromImage()
およびQPixmap::fromImage()
関数があります。