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

📄 transactionthread.cpp

📁 Qt4的一些例子
💻 CPP
字号:
#include <QtGui>#include "transactionthread.h"using namespace std;FlipTransaction::FlipTransaction(Qt::Orientation orientation){    this->orientation = orientation;}QImage FlipTransaction::apply(const QImage &image){    return image.mirrored(orientation == Qt::Horizontal,                          orientation == Qt::Vertical);}QString FlipTransaction::message(){    if (orientation == Qt::Horizontal) {        return QObject::tr("Flipping image horizontally...");    } else {        return QObject::tr("Flipping image vertically...");    }}ResizeTransaction::ResizeTransaction(const QSize &size){    this->size = size;}QString ResizeTransaction::message(){    return QObject::tr("Resizing image...");}QImage ResizeTransaction::apply(const QImage &image){    return image.scaled(size, Qt::IgnoreAspectRatio,                        Qt::SmoothTransformation);}ConvertDepthTransaction::ConvertDepthTransaction(int depth){    this->depth = depth;}QImage ConvertDepthTransaction::apply(const QImage &image){    QImage::Format format;    switch (depth) {    case 1:        format = QImage::Format_Mono;        break;    case 8:        format = QImage::Format_Indexed8;        break;    case 24:    default:        format = QImage::Format_RGB32;    }    return image.convertToFormat(format);}QString ConvertDepthTransaction::message(){    return QObject::tr("Converting image depth...");}void TransactionThread::addTransaction(Transaction *transact){    QMutexLocker locker(&mutex);    transactions.enqueue(transact);    if (!isRunning())        start();}void TransactionThread::run(){    Transaction *transact;    forever {        mutex.lock();        if (transactions.isEmpty()) {            mutex.unlock();            break;        }        QImage oldImage = currentImage;        transact = transactions.dequeue();        mutex.unlock();        emit transactionStarted(transact->message());        QImage newImage = transact->apply(oldImage);        delete transact;        mutex.lock();        currentImage = newImage;        mutex.unlock();    }}void TransactionThread::setImage(const QImage &image){    QMutexLocker locker(&mutex);    currentImage = image;}QImage TransactionThread::image(){    QMutexLocker locker(&mutex);    return currentImage;}

⌨️ 快捷键说明

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