简述:
记录一下如何在 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
#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();
- }
#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;
- }
#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;
}
实现效果:
未打开时:
打开后:
未完待续。。。