⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scribblearea.cpp

📁 QT 开发环境里面一个很重要的文件
💻 CPP
字号:
/******************************************************************************** Copyright (C) 2005-2006 Trolltech ASA. All rights reserved.**** This file is part of the example classes of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include <QtGui>#include "scribblearea.h"ScribbleArea::ScribbleArea(QWidget *parent)    : QWidget(parent){    setAttribute(Qt::WA_StaticContents);    modified = false;    scribbling = false;    myPenWidth = 1;    myPenColor = Qt::blue;}bool ScribbleArea::openImage(const QString &fileName){    QImage loadedImage;    if (!loadedImage.load(fileName))        return false;    QSize newSize = loadedImage.size().expandedTo(size());    resizeImage(&loadedImage, newSize);    image = loadedImage;    modified = false;    update();    return true;}bool ScribbleArea::saveImage(const QString &fileName, const char *fileFormat){    QImage visibleImage = image;    resizeImage(&visibleImage, size());    if (visibleImage.save(fileName, fileFormat)) {        modified = false;        return true;    } else {        return false;    }}void ScribbleArea::setPenColor(const QColor &newColor){    myPenColor = newColor;}void ScribbleArea::setPenWidth(int newWidth){    myPenWidth = newWidth;}void ScribbleArea::clearImage(){    image.fill(qRgb(255, 255, 255));    modified = true;    update();}void ScribbleArea::mousePressEvent(QMouseEvent *event){    if (event->button() == Qt::LeftButton) {        lastPoint = event->pos();        scribbling = true;    }}void ScribbleArea::mouseMoveEvent(QMouseEvent *event){    if ((event->buttons() & Qt::LeftButton) && scribbling)        drawLineTo(event->pos());}void ScribbleArea::mouseReleaseEvent(QMouseEvent *event){    if (event->button() == Qt::LeftButton && scribbling) {        drawLineTo(event->pos());        scribbling = false;    }}void ScribbleArea::paintEvent(QPaintEvent * /* event */){    QPainter painter(this);    painter.drawImage(QPoint(0, 0), image);}void ScribbleArea::resizeEvent(QResizeEvent *event){    if (width() > image.width() || height() > image.height()) {        int newWidth = qMax(width() + 128, image.width());        int newHeight = qMax(height() + 128, image.height());        resizeImage(&image, QSize(newWidth, newHeight));        update();    }    QWidget::resizeEvent(event);}void ScribbleArea::drawLineTo(const QPoint &endPoint){    QPainter painter(&image);    painter.setPen(QPen(myPenColor, myPenWidth, Qt::SolidLine, Qt::RoundCap,                        Qt::RoundJoin));    painter.drawLine(lastPoint, endPoint);    modified = true;    int rad = (myPenWidth / 2) + 2;    update(QRect(lastPoint, endPoint).normalized()                                     .adjusted(-rad, -rad, +rad, +rad));    lastPoint = endPoint;}void ScribbleArea::resizeImage(QImage *image, const QSize &newSize){    if (image->size() == newSize)        return;    QImage newImage(newSize, QImage::Format_RGB32);    newImage.fill(qRgb(255, 255, 255));    QPainter painter(&newImage);    painter.drawImage(QPoint(0, 0), *image);    *image = newImage;}void ScribbleArea::print(){    QPrinter printer(QPrinter::HighResolution);     QPrintDialog *printDialog = new QPrintDialog(&printer, this);    if (printDialog->exec() == QDialog::Accepted) {        QPainter painter(&printer);        QRect rect = painter.viewport();        QSize size = image.size();        size.scale(rect.size(), Qt::KeepAspectRatio);        painter.setViewport(rect.x(), rect.y(), size.width(), size.height());        painter.setWindow(image.rect());        painter.drawImage(0, 0, image);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -