QT MDI多文檔打開圖像顯示

        想做一個圖像的批處理工具,要打開多張圖像,那麼簡單地寫了一下。

        MainWindow,打開對話框,選擇多張圖像,然後打開,在midArea中進行顯示。關於MidArea的一些參考文檔:

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

        https://blog.csdn.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();
        }
    }
}


最後放一個效果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章