QT普通文本编辑

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));
}




相关文章:

  • 2021-04-29
  • 2022-12-23
  • 2021-11-11
  • 2022-02-10
  • 2022-02-18
  • 2021-12-14
  • 2021-11-27
猜你喜欢
  • 2022-01-16
  • 2022-12-23
  • 2021-05-23
  • 2021-10-20
  • 2022-01-28
  • 2021-09-08
相关资源
相似解决方案