1在mainwindow.h中加入
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
#include <QDialog>
#include <QFileDialog>
#include <QWidget>
#include <QImage>
#include <QLabel>
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QPainter>
#include <QtPrintSupport/QPrintDialog>
#include <QtPrintSupport/QPrinter>
#include <QPrinter>
#include <QPrintDialog>
#include <QT>
#include <QImage>
#include <QSize>
#include <Qt>
#include <QCoreApplication>
#include <QApplication>
#include <QClipboard>
#include <QTextEdit>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
QString fileName;
QImage img;
protected slots:
void loadFile(QString filename);
void ShowNewFile();
void ShowOpenFile();
void ShowPrintText();
void ShowPrintImage();
void ShowZoomIn();
void ShowZoomOut();
void ShowRotate90();
void ShowRotate180();
void ShowRotate270();
};
#endif // MAINWINDOW_H
//2main.c中
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
3mainwindow.c中
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
char img_value=img.load("image.png");
if(img_value)
{
ui->label_image->setPixmap(QPixmap::fromImage(img));
}
connect(ui->action_new,SIGNAL(triggered()),this,SLOT(ShowNewFile()));
connect(ui->action_open,SIGNAL(triggered()),this,SLOT(ShowOpenFile()));
connect(ui->action_print_txt,SIGNAL(triggered()),this,SLOT(ShowPrintText()));
connect(ui->action_print_picture,SIGNAL(triggered()),this,SLOT(ShowPrintImage()));
connect(ui->action_quit,SIGNAL(triggered()),qApp, SLOT(quit()));
connect(ui->action_copy,SIGNAL(triggered()),ui->textEdit,SLOT(copy()));
connect(ui->action_cut,SIGNAL(triggered()),ui->textEdit,SLOT(cut()));
connect(ui->action_paste,SIGNAL(triggered()),ui->textEdit,SLOT(paste()));
connect(ui->action_redo,SIGNAL(triggered()),ui->textEdit,SLOT(redo()));
connect(ui->action_undo,SIGNAL(triggered()),ui->textEdit,SLOT(undo()));
connect(ui->action_shrink,SIGNAL(triggered()),this,SLOT(ShowZoomIn()));
connect(ui->action_enlarge,SIGNAL(triggered()),this,SLOT(ShowZoomOut()));
connect(ui->action_rotate90,SIGNAL(triggered()),this,SLOT(ShowRotate90()));
connect(ui->action_rotate180,SIGNAL(triggered()),this,SLOT(ShowRotate180()));
connect(ui->action_rotate270,SIGNAL(triggered()),this,SLOT(ShowRotate270()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::loadFile(QString filename)
{
printf("file name:%s\n",filename);
QFile file(filename);
if(file.open(QIODevice::ReadOnly|QIODevice::Text))
{
QTextStream textStream(&file);
while(!textStream.atEnd())
{
ui->textEdit->append(textStream.readLine());
printf("read line\n");
}
printf("end\n");
}
}
void MainWindow::ShowNewFile()
{
qDebug("ok");
MainWindow *newMainWindow = new MainWindow;
newMainWindow ->show();
}
void MainWindow::ShowOpenFile()
{
qDebug("ShowOpenFile");
fileName = QFileDialog::getOpenFileName(this);
if(! fileName.isEmpty())
{
if(ui->textEdit->document()->isEmpty())
{
qDebug("ShowOpenfile1");
loadFile(fileName);
}
else
{
MainWindow *newMainWindow = new MainWindow;
newMainWindow ->show();
newMainWindow->loadFile(fileName);
}
}
}
void MainWindow::ShowPrintText()
{
qDebug("ShowPrintText()");
QPrinter printer;
QPrintDialog printeDialog(&printer,this);
if(printeDialog.exec())
{
QTextDocument *doc = ui->textEdit->document();
doc->print(&printer);
}
}
void MainWindow::ShowPrintImage()
{
QPrinter printer;
QPrintDialog printDialog(&printer,this);
if(printDialog.exec())
{
QPainter painter(&printer);
QRect rect = painter.viewport();
QSize size = img.size();
size.scale(rect.size(),Qt::KeepAspectRatio);
painter.setViewport(rect.x(),rect.y(),size.width(),size.height());
painter.setWindow(img.rect());
painter.drawImage(0,0,img);
}
}
void MainWindow::ShowZoomIn()
{
if(img.isNull()) return;
QMatrix matrix;
matrix.scale(0.5,0.5);
img = img.transformed(matrix);
ui->label_image->setPixmap(QPixmap::fromImage(img));
}
void MainWindow::ShowZoomOut()
{
if(img.isNull()) return;
QMatrix matrix;
matrix.scale(2,2);
img = img.transformed(matrix);
ui->label_image->setPixmap(QPixmap::fromImage(img));
}
void MainWindow::ShowRotate90()
{
if(img.isNull()) return;
QMatrix matrix;
matrix.rotate(90);
img = img.transformed(matrix);
ui->label_image->setPixmap(QPixmap::fromImage(img));
}
void MainWindow::ShowRotate180()
{
if(img.isNull()) return;
QMatrix matrix;
matrix.rotate(180);
img = img.transformed(matrix);
ui->label_image->setPixmap(QPixmap::fromImage(img));
}
void MainWindow::ShowRotate270()
{
if(img.isNull()) return;
QMatrix matrix;
matrix.rotate(270);
img = img.transformed(matrix);
ui->label_image->setPixmap(QPixmap::fromImage(img));
}