亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? imagewindow.cpp

?? 一個在linux下
?? CPP
字號:
#include <qaction.h>#include <qapplication.h>#include <qfile.h>#include <qfiledialog.h>#include <qlabel.h>#include <qmenubar.h>#include <qmessagebox.h>#include <qpopupmenu.h>#include <qspinbox.h>#include <qstatusbar.h>#include "imagewindow.h"#include "resizedialog.h"ImageWindow::ImageWindow(QWidget *parent, const char *name)    : QMainWindow(parent, name){    thread.setTargetWidget(this);    imageLabel = new QLabel(this);    imageLabel->setSizePolicy(QSizePolicy::Ignored,                              QSizePolicy::Ignored);    imageLabel->setBackgroundMode(PaletteDark);    imageLabel->setAlignment(AlignLeft | AlignTop);    setCentralWidget(imageLabel);    createActions();    createMenus();    createStatusBar();    setCurrentFile("");    modified = false;}void ImageWindow::customEvent(QCustomEvent *event){    if ((int)event->type() == TransactionStart) {        TransactionStartEvent *startEvent =                (TransactionStartEvent *)event;        infoLabel->setText(startEvent->message);    } else if ((int)event->type() == AllTransactionsDone) {        openAct->setEnabled(true);        saveAct->setEnabled(true);        saveAsAct->setEnabled(true);        imageLabel->setPixmap(QPixmap(thread.image()));        infoLabel->setText(tr("Ready"));        modLabel->setText(tr("MOD"));        modified = true;        statusBar()->message(tr("Done"), 2000);    } else {        QMainWindow::customEvent(event);    }}void ImageWindow::closeEvent(QCloseEvent *event){    if (maybeSave())        event->accept();    else        event->ignore();}void ImageWindow::open(){    if (maybeSave()) {        QString fileName =                QFileDialog::getOpenFileName(".", "", this);        if (!fileName.isEmpty())            loadFile(fileName);    }}bool ImageWindow::save(){    if (curFile.isEmpty()) {        return saveAs();    } else {        saveFile(curFile);        return true;    }}bool ImageWindow::saveAs(){    QString fileName = QFileDialog::getSaveFileName(".", "", this);    if (QFile::exists(fileName)) {        int ret = QMessageBox::warning(this, tr("Image Pro"),                     tr("File %1 already exists.\n"                        "Do you want to overwrite it?")                     .arg(QDir::convertSeparators(fileName)),                     QMessageBox::Yes | QMessageBox::Default,                     QMessageBox::No | QMessageBox::Escape);        if (ret == QMessageBox::No)            return true;    }    if (!fileName.isEmpty())        saveFile(fileName);    return true;}void ImageWindow::flipHorizontally(){    addTransaction(new FlipTransaction(Horizontal));}void ImageWindow::flipVertically(){    addTransaction(new FlipTransaction(Vertical));}void ImageWindow::resizeImage(){    ResizeDialog dialog;    dialog.widthSpinBox->setValue(imageLabel->pixmap()->width());    dialog.heightSpinBox->setValue(imageLabel->pixmap()->height());    if (dialog.exec()) {        QSize newSize(dialog.widthSpinBox->value(),                      dialog.heightSpinBox->value());        addTransaction(new ResizeTransaction(newSize));    }}void ImageWindow::convertTo32Bit(){    addTransaction(new ConvertDepthTransaction(32));}void ImageWindow::convertTo8Bit(){    addTransaction(new ConvertDepthTransaction(8));}void ImageWindow::convertTo1Bit(){    addTransaction(new ConvertDepthTransaction(1));}void ImageWindow::addTransaction(Transaction *transact){    thread.addTransaction(transact);    openAct->setEnabled(false);    saveAct->setEnabled(false);    saveAsAct->setEnabled(false);}void ImageWindow::about(){    QMessageBox::about(this, tr("About Image Pro"),            tr("<h2>Image Pro 1.0</h2>"               "<p>Copyright &copy; 2003 Software Inc."               "<p>Image Pro is a small application that "               "demonstrates <b>QCustomEvent</b>, <b>QMutex</b>, "               "and <b>QThread</b>."));}void ImageWindow::createActions(){    openAct = new QAction(tr("&Open..."), tr("Ctrl+O"), this);    openAct->setStatusTip(tr("Open an existing image file"));    connect(openAct, SIGNAL(activated()),            this, SLOT(open()));    saveAct = new QAction(tr("&Save"), tr("Ctrl+S"), this);    saveAct->setStatusTip(tr("Save the image to disk"));    connect(saveAct, SIGNAL(activated()),            this, SLOT(save()));    saveAsAct = new QAction(tr("Save &As..."), 0, this);    saveAsAct->setStatusTip(tr("Save the image under a new name"));    connect(saveAsAct, SIGNAL(activated()),            this, SLOT(saveAs()));    exitAct = new QAction(tr("E&xit"), tr("Ctrl+Q"), this);    exitAct->setStatusTip(tr("Exit the application"));    connect(exitAct, SIGNAL(activated()),            this, SLOT(close()));    flipHorizontallyAct = new QAction(tr("Flip &Horizontally"),                                      tr("Ctrl+H"), this);    flipHorizontallyAct->setStatusTip(tr("Flip the image "                                         "horizontally"));    connect(flipHorizontallyAct, SIGNAL(activated()),            this, SLOT(flipHorizontally()));    flipVerticallyAct = new QAction(tr("Flip &Vertically"),                                    tr("Ctrl+V"), this);    flipVerticallyAct->setStatusTip(tr("Flip the image vertically"));    connect(flipVerticallyAct, SIGNAL(activated()),            this, SLOT(flipVertically()));    resizeAct = new QAction(tr("&Resize..."), tr("Ctrl+R"), this);    resizeAct->setStatusTip(tr("Resize the image"));    connect(resizeAct, SIGNAL(activated()),            this, SLOT(resizeImage()));    convertTo32BitAct = new QAction(tr("32 Bit"), 0, this);    convertTo32BitAct->setStatusTip(tr("Convert to 32-bit image"));    connect(convertTo32BitAct, SIGNAL(activated()),            this, SLOT(convertTo32Bit()));    convertTo8BitAct = new QAction(tr("8 Bit"), 0, this);    convertTo8BitAct->setStatusTip(tr("Convert to 8-bit image"));    connect(convertTo8BitAct, SIGNAL(activated()),            this, SLOT(convertTo8Bit()));    convertTo1BitAct = new QAction(tr("1 Bit"), 0, this);    convertTo1BitAct->setStatusTip(tr("Convert to 1-bit image"));    connect(convertTo1BitAct, SIGNAL(activated()),            this, SLOT(convertTo1Bit()));    aboutAct = new QAction(tr("&About"), 0, this);    aboutAct->setStatusTip(tr("Show the application's About box"));    connect(aboutAct, SIGNAL(activated()),            this, SLOT(about()));    aboutQtAct = new QAction(tr("About &Qt"), 0, this);    aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));    connect(aboutQtAct, SIGNAL(activated()),            qApp, SLOT(aboutQt()));}void ImageWindow::createMenus(){    fileMenu = new QPopupMenu(this);    openAct->addTo(fileMenu);    saveAct->addTo(fileMenu);    saveAsAct->addTo(fileMenu);    fileMenu->insertSeparator();    exitAct->addTo(fileMenu);    editMenu = new QPopupMenu(this);    flipHorizontallyAct->addTo(editMenu);    flipVerticallyAct->addTo(editMenu);    resizeAct->addTo(editMenu);    editMenu->insertSeparator();    convertToSubMenu = new QPopupMenu(this);    convertTo32BitAct->addTo(convertToSubMenu);    convertTo8BitAct->addTo(convertToSubMenu);    convertTo1BitAct->addTo(convertToSubMenu);    editMenu->insertItem(tr("&Convert to"), convertToSubMenu);    helpMenu = new QPopupMenu(this);    aboutAct->addTo(helpMenu);    aboutQtAct->addTo(helpMenu);    menuBar()->insertItem(tr("&File"), fileMenu);    menuBar()->insertItem(tr("&Edit"), editMenu);    menuBar()->insertSeparator();    menuBar()->insertItem(tr("&Help"), helpMenu);}void ImageWindow::createStatusBar(){    infoLabel = new QLabel(this);    modLabel = new QLabel(tr(" MOD "), this);    modLabel->setAlignment(AlignHCenter);    modLabel->setMinimumSize(modLabel->sizeHint());    modLabel->clear();    statusBar()->addWidget(infoLabel, 1);    statusBar()->addWidget(modLabel);    infoLabel->setText(tr("Ready"));}bool ImageWindow::maybeSave(){    if (modified) {        int ret = QMessageBox::warning(this, tr("Image Pro"),                     tr("The image has been modified.\n"                        "Do you want to save your changes?"),                     QMessageBox::Yes | QMessageBox::Default,                     QMessageBox::No,                     QMessageBox::Cancel | QMessageBox::Escape);        if (ret == QMessageBox::Yes)            return save();        else if (ret == QMessageBox::Cancel)            return false;    }    return true;}void ImageWindow::loadFile(const QString &fileName){    QImage newImage;    QApplication::setOverrideCursor(waitCursor);    bool loaded = newImage.load(fileName);    QApplication::restoreOverrideCursor();    if (loaded) {        thread.setImage(newImage);        imageFormat = QImage::imageFormat(fileName);        imageLabel->setPixmap(QPixmap(newImage));        setCurrentFile(fileName);        statusBar()->message(tr("File loaded"), 2000);    } else {        QMessageBox::warning(this, tr("Image Pro"),                             tr("Error when loading image."));        statusBar()->message(tr("Loading canceled"), 2000);    }}void ImageWindow::saveFile(const QString &fileName){    QImage image = thread.image();    QApplication::setOverrideCursor(waitCursor);    bool saved = image.save(fileName, imageFormat);    QApplication::restoreOverrideCursor();    if (saved) {        setCurrentFile(fileName);        statusBar()->message(tr("File saved"), 2000);    } else {        statusBar()->message(tr("Saving canceled"), 2000);    }}void ImageWindow::setCurrentFile(const QString &fileName){    curFile = fileName;    modLabel->clear();    modified = false;    bool hasImage = !curFile.isEmpty();    if (hasImage) {        setCaption(tr("%1 - %2").arg(strippedName(curFile))                                .arg(tr("Image Pro")));    } else {        setCaption(tr("Image Pro"));    }    saveAct->setEnabled(hasImage);    saveAsAct->setEnabled(hasImage);    flipHorizontallyAct->setEnabled(hasImage);    flipVerticallyAct->setEnabled(hasImage);    resizeAct->setEnabled(hasImage);    convertTo32BitAct->setEnabled(hasImage);    convertTo8BitAct->setEnabled(hasImage);    convertTo1BitAct->setEnabled(hasImage);}QString ImageWindow::strippedName(const QString &fullFileName){    return QFileInfo(fullFileName).fileName();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品免费在线观看| 欧美一级xxx| 欧美日韩国产经典色站一区二区三区| 欧美日韩美女一区二区| 国产日韩欧美麻豆| 天使萌一区二区三区免费观看| 国产老肥熟一区二区三区| 欧美在线你懂的| 中文字幕免费不卡在线| 美女精品自拍一二三四| 欧美视频中文一区二区三区在线观看| 久久久久久久久久久久久女国产乱 | 91免费看`日韩一区二区| 欧美成人一区二区三区| 亚洲综合视频在线观看| 99久久精品国产导航| 2021国产精品久久精品| 美日韩一区二区三区| 欧美日韩色综合| 亚洲午夜激情网站| 在线观看av一区二区| 国产精品传媒视频| 成人18精品视频| 国产精品免费看片| 国产成人h网站| 国产嫩草影院久久久久| 国产在线不卡一区| www国产精品av| 国产乱淫av一区二区三区| 日韩一区国产二区欧美三区| 日日噜噜夜夜狠狠视频欧美人| 在线视频国产一区| 一区二区三区四区蜜桃| 欧洲中文字幕精品| 亚洲成a人片在线观看中文| 欧美撒尿777hd撒尿| 亚洲国产一区二区三区| 欧美日韩国产一二三| 婷婷中文字幕一区三区| 欧美精品aⅴ在线视频| 亚洲成a人片综合在线| 欧美一区二区三区免费视频 | 91丨porny丨最新| 亚洲视频在线观看三级| 在线观看日韩电影| 日本欧美一区二区三区乱码| 欧美成人精品福利| 丰满白嫩尤物一区二区| 成人免费小视频| 欧美色倩网站大全免费| 日韩国产欧美在线播放| 久久亚洲综合色一区二区三区| 国产乱码精品一品二品| 国产精品久线观看视频| 在线视频欧美精品| 日本强好片久久久久久aaa| 精品成人免费观看| 99久久综合国产精品| 亚洲一区二区四区蜜桃| 日韩一区二区在线观看| 国产 欧美在线| 一区二区三区蜜桃| 欧美大白屁股肥臀xxxxxx| 成人av网站在线| 天天射综合影视| 久久精品在线免费观看| 欧美优质美女网站| 九九在线精品视频| 亚洲在线成人精品| 久久久久久久性| 欧美日韩国产中文| 高清在线不卡av| 五月婷婷另类国产| 中文字幕亚洲综合久久菠萝蜜| 欧美日韩极品在线观看一区| 国产成人综合亚洲91猫咪| 亚洲一区二区三区精品在线| 久久久.com| 在线播放亚洲一区| 91老司机福利 在线| 久久91精品久久久久久秒播| 亚洲欧美电影院| 久久综合丝袜日本网| 欧美撒尿777hd撒尿| 春色校园综合激情亚洲| 美女性感视频久久| 亚洲制服欧美中文字幕中文字幕| 国产人成亚洲第一网站在线播放| 欧美日韩一区二区在线视频| 成人av资源站| 国产资源在线一区| 奇米一区二区三区av| 亚洲一区二区三区四区中文字幕| 国产日韩精品一区| 精品国产乱码久久久久久1区2区 | 欧美日本在线视频| 色丁香久综合在线久综合在线观看| 极品美女销魂一区二区三区 | 欧美性猛交xxxx黑人交| 成人精品小蝌蚪| 成人性色生活片免费看爆迷你毛片| 亚洲在线视频一区| 亚洲精品国产无套在线观| 国产亚洲女人久久久久毛片| 欧美一级二级三级蜜桃| 91麻豆精品国产| 欧美精品18+| 欧洲一区二区av| 色综合久久久久久久久久久| 不卡的电视剧免费网站有什么| 国产最新精品精品你懂的| 美女视频一区在线观看| 日韩va欧美va亚洲va久久| 亚洲电影在线播放| 亚洲一级在线观看| 亚洲最新视频在线播放| 自拍偷在线精品自拍偷无码专区| 成人欧美一区二区三区| 亚洲视频免费在线观看| 一区二区三区四区不卡在线 | 91免费观看视频| 色综合久久久久综合体桃花网| 91小视频在线| 色婷婷综合五月| 欧美性高清videossexo| 7777精品伊人久久久大香线蕉的| 欧美精品xxxxbbbb| 日韩精品一区二区三区在线观看| 欧美成人午夜电影| 国产欧美一区二区精品秋霞影院| 久久久.com| 中文字幕在线观看不卡视频| 一区二区三区日韩欧美| 肉色丝袜一区二区| 国内精品嫩模私拍在线| av在线不卡免费看| 欧美日韩国产一级二级| 日韩欧美在线观看一区二区三区| 久久亚洲影视婷婷| 亚洲欧美综合在线精品| 亚洲午夜一区二区| 国内精品伊人久久久久av一坑| 国产91清纯白嫩初高中在线观看| 色综合色狠狠综合色| 555www色欧美视频| 国产亚洲成aⅴ人片在线观看| 中文欧美字幕免费| 天堂在线一区二区| 国产成人免费av在线| 91丝袜美女网| 精品乱人伦小说| 亚洲狼人国产精品| 麻豆国产一区二区| av不卡一区二区三区| 欧美一区二区美女| 日韩一区欧美小说| 麻豆精品久久久| 在线观看一区二区精品视频| 精品国产亚洲在线| 一区二区三区在线播| 高清国产午夜精品久久久久久| 91极品视觉盛宴| 国产亚洲精久久久久久| 日韩综合小视频| 99视频超级精品| 欧美v日韩v国产v| 国产精品日产欧美久久久久| 奇米888四色在线精品| 色综合视频在线观看| 亚洲精品一区二区三区福利| 亚洲一区二区在线视频| 岛国av在线一区| 精品国产一区二区精华| 日韩中文字幕区一区有砖一区| av一区二区三区四区| 久久蜜桃一区二区| 日本不卡不码高清免费观看| 91原创在线视频| 国产精品视频yy9299一区| 蜜乳av一区二区| 欧美卡1卡2卡| 免费在线欧美视频| 99精品欧美一区二区蜜桃免费 | 久久色在线观看| 日韩精品视频网站| 欧美日韩在线电影| 亚洲男人的天堂av| 色综合久久久久久久久| 国产精品国产三级国产普通话99 | 精品久久人人做人人爰| 日韩二区在线观看| 欧美日韩国产电影| 亚洲电影视频在线| 欧美日韩日日骚| 亚洲第一狼人社区| 欧美三级日韩三级| 午夜久久久影院| 91精品国产综合久久久久久久久久| 亚洲成人免费视| 欧美四级电影在线观看|