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();
}
}
}
最后放一个效果: