来源: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
- #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
- #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
- #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;
- }
实现效果:
未打开时:
打开后: