Qt 在GraphicsView中 打开一幅图片

       

http://blog.csdn.net/anialy/article/details/8181038

简述:

记录一下如何在 Qt中打开一幅图片


步骤:

1. 新建一个项目,Qt C++ 项目, Qt GUI应用

之后按步骤新建就可以了,


2. 勾选中下面这三个



3. 新建一个MainWindow

点击下一步, 完成, 工程创建完毕



4 这一步之后是具体如何用Qt打开一幅图片

双击mainwindow.ui 进入design模式,

选中


拖拽到上方


于是就出现了一个窗口。


5. 之后添加一个打开图片的按钮

拖拽一个PushButton, 用同样的方法,之后改变名字为OpenImageBtn这个是Button对象实例的名字



6. 添加信号事件, 按了OpenImageBtn之后,打开图片文件

回到 需要定义一个SLOT信号槽,来处理按了button的事件,这里有一个on_slotOpenImage_triggered() 信号槽

具体参看代码.其他包括文件打开的代码,参考网上


代码:

头文件——

mainwindow.h

  1. #ifndef MAINWINDOW_H 
  2. #define MAINWINDOW_H 
  3.  
  4. #include <QMainWindow> 
  5. #include <QImage> 
  6. #include <QGraphicsView> 
  7. #include <QGraphicsScene> 
  8. #include <QFileDialog> 
  9.  
  10. namespace Ui { 
  11.     class MainWindow; 
  12.  
  13. class MainWindow : public QMainWindow 
  14.     Q_OBJECT 
  15.  
  16. public
  17.     explicit MainWindow(QWidget *parent = 0); 
  18.     ~MainWindow(); 
  19.  
  20. private
  21.     Ui::MainWindow *ui; 
  22.     QImage *image; 
  23.  
  24. private slots: 
  25.     void on_slotOpenImage_triggered(); //信号槽 
  26. }; 
  27.  
  28. #endif // MAINWINDOW_H 
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QImage>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QFileDialog>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QImage *image;

private slots:
    void on_slotOpenImage_triggered(); //信号槽
};

#endif // MAINWINDOW_H

源文件——

main.cpp

  1. #include <QtGui/QApplication> 
  2. #include "mainwindow.h" 
  3.  
  4. int main(int argc, char *argv[]) 
  5.     QApplication a(argc, argv); 
  6.     MainWindow w; 
  7.     w.show(); 
  8.  
  9.     return a.exec(); 
#include <QtGui/QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

mainwindow.cpp

  1. #include "mainwindow.h" 
  2. #include "ui_mainwindow.h" 
  3.  
  4. MainWindow::MainWindow(QWidget *parent) : 
  5.     QMainWindow(parent), 
  6.     ui(new Ui::MainWindow) 
  7.     ui->setupUi(this); 
  8.     resize(800,600); 
  9.  
  10.     this->image = new QImage(); 
  11.  
  12.     //connect the button listener event 
  13.      connect(ui->OpenImageBtn,SIGNAL(clicked()), this, SLOT(on_slotOpenImage_triggered())); 
  14.  
  15.  
  16. void MainWindow::on_slotOpenImage_triggered() 
  17.     QString fileName = QFileDialog::getOpenFileName( 
  18.                 this, "open image file"
  19.                 "."
  20.                 "Image files (*.bmp *.jpg *.pbm *.pgm *.png *.ppm *.xbm *.xpm);;All files (*.*)"); 
  21.     if(fileName != ""
  22.     { 
  23.         if(image->load(fileName)) 
  24.         { 
  25.             QGraphicsScene *scene = new QGraphicsScene; 
  26.             scene->addPixmap(QPixmap::fromImage(*image)); 
  27.             ui->graphicsView->setScene(scene); 
  28.             ui->graphicsView->resize(image->width() + 10, image->height() + 10); 
  29.             ui->graphicsView->show(); 
  30.         } 
  31.     } 
  32.  
  33. MainWindow::~MainWindow() 
  34.     delete image; 
  35.     delete ui; 
#include "mainwindow.h"
#include "ui_mainwindow.h"

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

    this->image = new QImage();

    //connect the button listener event
     connect(ui->OpenImageBtn,SIGNAL(clicked()), this, SLOT(on_slotOpenImage_triggered()));

}

void MainWindow::on_slotOpenImage_triggered()
{
    QString fileName = QFileDialog::getOpenFileName(
                this, "open image file",
                ".",
                "Image files (*.bmp *.jpg *.pbm *.pgm *.png *.ppm *.xbm *.xpm);;All files (*.*)");
    if(fileName != "")
    {
        if(image->load(fileName))
        {
            QGraphicsScene *scene = new QGraphicsScene;
            scene->addPixmap(QPixmap::fromImage(*image));
            ui->graphicsView->setScene(scene);
            ui->graphicsView->resize(image->width() + 10, image->height() + 10);
            ui->graphicsView->show();
        }
    }
}

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


实现效果:

未打开时:


打开后:



未完待续。。。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值