Qt之简易截图工具

  widget.h如下:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include "QPixmap.h"
#include "QTimer.h"

namespace Ui {
    class Widget;
}

class Widget : public QWidget {
    Q_OBJECT
public:
    explicit Widget ( QWidget *parent = 0 );
    ~Widget();
private slots:
    void on_cut_screen_clicked();
    void changeValue();
private:
    Ui::Widget *ui;
    QPixmap pixmap;
    QTimer *timer;
};

#endif // WIDGET_H

  widget.cpp如下:

#include "widget.h"
#include "ui_widget.h"
#include "QDesktopWidget.h"
#include "QPixmap.h"
#include "QFileDialog.h"
#include "QDesktopServices.h"
#include "QClipboard.h"

Widget::Widget ( QWidget *parent ) : QWidget ( parent ), ui ( new Ui::Widget ) {
    ui->setupUi ( this );
    timer = new QTimer();
    timer->setInterval ( 1000 ); /* 设置超时时间为1秒 */
    connect ( timer, SIGNAL ( timeout() ), this, SLOT ( changeValue() ) );
}

Widget::~Widget() {
    delete ui;
}

void Widget::on_cut_screen_clicked() {
    timer->start();
    this->hide(); /* 将当前窗口进行隐藏 */
    pixmap = QPixmap::grabWindow ( QApplication::desktop()->winId() );
    ui->label->setPixmap ( pixmap.scaled ( ui->label->size() ) );
    QString fileName = QFileDialog::getSaveFileName (
        this, "save file",
        QDesktopServices::storageLocation ( QDesktopServices::PicturesLocation ) );
    pixmap.save ( fileName );
    QClipboard *clipboard = QApplication::clipboard();
    clipboard->setPixmap ( pixmap );
}

void Widget::changeValue() {
    this->show(); /* 显示主窗口 */
    timer->stop();
}

该代码实现了截图、保存截图文件以及剪切板的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值