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

📄 screenshot.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 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 "screenshot.h"Screenshot::Screenshot(){    screenshotLabel = new QLabel;    screenshotLabel->setSizePolicy(QSizePolicy::Expanding,                                   QSizePolicy::Expanding);    screenshotLabel->setAlignment(Qt::AlignCenter);    screenshotLabel->setMinimumSize(240, 160);    createOptionsGroupBox();    createButtonsLayout();    mainLayout = new QVBoxLayout;    mainLayout->addWidget(screenshotLabel);    mainLayout->addWidget(optionsGroupBox);    mainLayout->addLayout(buttonsLayout);    setLayout(mainLayout);    shootScreen();    delaySpinBox->setValue(5);    setWindowTitle(tr("Screenshot"));    resize(300, 200);}void Screenshot::resizeEvent(QResizeEvent * /* event */){    QSize scaledSize = originalPixmap.size();    scaledSize.scale(screenshotLabel->size(), Qt::KeepAspectRatio);    if (!screenshotLabel->pixmap()            || scaledSize != screenshotLabel->pixmap()->size())        updateScreenshotLabel();}void Screenshot::newScreenshot(){    if (hideThisWindowCheckBox->isChecked())        hide();    newScreenshotButton->setDisabled(true);    QTimer::singleShot(delaySpinBox->value() * 1000, this, SLOT(shootScreen()));}void Screenshot::saveScreenshot(){    QString format = "png";    QString initialPath = QDir::currentPath() + tr("/untitled.") + format;    QString fileName = QFileDialog::getSaveFileName(this, tr("Save As"),                               initialPath,                               tr("%1 Files (*.%2);;All Files (*)")                               .arg(format.toUpper())                               .arg(format));    if (!fileName.isEmpty())        originalPixmap.save(fileName, format.toAscii());}void Screenshot::shootScreen(){    if (delaySpinBox->value() != 0)        qApp->beep();    originalPixmap = QPixmap::grabWindow(QApplication::desktop()->winId());    updateScreenshotLabel();    newScreenshotButton->setDisabled(false);    if (hideThisWindowCheckBox->isChecked())        show();}void Screenshot::updateCheckBox(){    if (delaySpinBox->value() == 0)        hideThisWindowCheckBox->setDisabled(true);    else        hideThisWindowCheckBox->setDisabled(false);}void Screenshot::createOptionsGroupBox(){    optionsGroupBox = new QGroupBox(tr("Options"));    delaySpinBox = new QSpinBox;    delaySpinBox->setSuffix(tr(" s"));    delaySpinBox->setMaximum(60);    connect(delaySpinBox, SIGNAL(valueChanged(int)), this, SLOT(updateCheckBox()));    delaySpinBoxLabel = new QLabel(tr("Screenshot Delay:"));    hideThisWindowCheckBox = new QCheckBox(tr("Hide This Window"));    optionsGroupBoxLayout = new QGridLayout;    optionsGroupBoxLayout->addWidget(delaySpinBoxLabel, 0, 0);    optionsGroupBoxLayout->addWidget(delaySpinBox, 0, 1);    optionsGroupBoxLayout->addWidget(hideThisWindowCheckBox, 1, 0, 1, 2);    optionsGroupBox->setLayout(optionsGroupBoxLayout);}void Screenshot::createButtonsLayout(){    newScreenshotButton = createButton(tr("New Screenshot"),                                       this, SLOT(newScreenshot()));    saveScreenshotButton = createButton(tr("Save Screenshot"),                                        this, SLOT(saveScreenshot()));    quitScreenshotButton = createButton(tr("Quit"), this, SLOT(close()));    buttonsLayout = new QHBoxLayout;    buttonsLayout->addStretch();    buttonsLayout->addWidget(newScreenshotButton);    buttonsLayout->addWidget(saveScreenshotButton);    buttonsLayout->addWidget(quitScreenshotButton);}QPushButton *Screenshot::createButton(const QString &text, QWidget *receiver,                                      const char *member){    QPushButton *button = new QPushButton(text);    button->connect(button, SIGNAL(clicked()), receiver, member);    return button;}void Screenshot::updateScreenshotLabel(){    screenshotLabel->setPixmap(originalPixmap.scaled(screenshotLabel->size(),                                                     Qt::KeepAspectRatio,                                                     Qt::SmoothTransformation));}

⌨️ 快捷键说明

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