QT MDI多文档打开图像显示

        想做一个图像的批处理工具,要打开多张图像,那么简单地写了一下。

        MainWindow,打开对话框,选择多张图像,然后打开,在midArea中进行显示。关于MidArea的一些参考文档:

        https://blog.****.net/rgbmarco/article/details/72902538

        https://blog.****.net/zhyh1435589631/article/details/45587115


好了直接上代码:

h文件:

#ifndef MULTIAREAWINDOW_H
#define MULTIAREAWINDOW_H

#include <QMainWindow>
#include <QMdiArea>

namespace Ui {
class MultiAreaWindow;
}

class MultiAreaWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_actionOpen_triggered();

private:   
    void start();
    Ui::MultiAreaWindow *ui;
    QMdiArea *ma;
};

#endif // MULTIAREAWINDOW_H

cpp文件:

#include "multiareawindow.h"
#include "ui_multiareawindow.h"
#include<QString>
#include<QFileDialog>
#include<QStringList>
#include<QGraphicsScene>
#include<QMdiSubWindow>
#include<QGraphicsView>


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

void MultiAreaWindow::start()
{
    ma = new QMdiArea;
    this->setCentralWidget(ma);
}

MultiAreaWindow::~MultiAreaWindow()
{
    delete ui;
}


void MultiAreaWindow::on_actionOpen_triggered()
{
    QStringList QStrIMGfileName = QFileDialog::getOpenFileNames(
                    this, "open image file",
                    ".",
                    "Image files (*.bmp *.jpg *.pbm *.pgm *.png *.ppm *.xbm *.xpm);;All files (*.*)");

    if(!QStrIMGfileName.empty())
    {
        for(int i=0;i<QStrIMGfileName.size();i++)
        {
            QString FilenameI =QStrIMGfileName[i];
            if(FilenameI.isEmpty())
                continue;
            QPixmap pixmap(FilenameI);
            QGraphicsScene* m_MainScene = new QGraphicsScene;
            m_MainScene->addPixmap(pixmap);
            QGraphicsView * myView = new QGraphicsView();
            myView->setScene(m_MainScene);

            QMdiSubWindow *child = ma->addSubWindow(myView);
            child->resize(300,300);
            child->show();
        }
    }
}


最后放一个效果:

QT MDI多文档打开图像显示