Qt5之截图小工具

软件截图

在这里插入图片描述

  • 新建截图
    在这里插入图片描述
  • 延迟3秒截图
    在这里插入图片描述
  • 隐藏本窗口截图
    在这里插入图片描述

代码

ScreenShot.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = ScreenShot
TEMPLATE = app


SOURCES += main.cpp\
        screenshot.cpp

HEADERS  += screenshot.h

FORMS    += screenshot.ui

screenshot.h

#ifndef SCREENSHOT_H
#define SCREENSHOT_H

#include <QDialog>

namespace Ui {
class screenshot;
}

class screenshot : public QDialog
{
    Q_OBJECT

public:
    explicit screenshot(QWidget *parent = 0);
    ~screenshot();

private:
    Ui::screenshot *ui;
    void slotConnect();

private slots:
    void sl_new();
    void sl_save();
    void sl_exit();
    void sl_screen();


};

#endif // SCREENSHOT_H



main.cpp

#include "screenshot.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    screenshot w;
    w.show();

    return a.exec();
}

screenshot.cpp

#include "screenshot.h"
#include "ui_screenshot.h"
#include <QDebug>
#include <QScreen>
#include <QFileDialog>
#include <QTimer>

screenshot::screenshot(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::screenshot)
{
    ui->setupUi(this);
    slotConnect();
}

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

void screenshot::slotConnect()
{
    connect(ui->pushButton_new,SIGNAL(clicked()),this,SLOT(sl_new()));
    connect(ui->pushButton_save,SIGNAL(clicked()),this,SLOT(sl_save()));
    connect(ui->pushButton_eixt,SIGNAL(clicked()),this,SLOT(sl_exit()));

}

void screenshot::sl_new()
{
   qDebug() << "sl_new";
   //判断隐藏选项是否勾选
   if(ui->checkBox_hide->isChecked())
   {
       this->hide();
   }
   //延时
   QTimer::singleShot(ui->m_timebox->value()*1000,this,SLOT(sl_screen()));

}

void screenshot::sl_screen()
{

    QScreen * screen = QGuiApplication::primaryScreen();
    QPixmap pixmap = screen->grabWindow(0);

    ui->screenPix->setPixmap(pixmap.scaled(ui->screenPix->size()));

    if(this->isHidden())
    {
        this->show();
    }
}

void screenshot::sl_save()
{
    qDebug() << "sl_save";
    const QPixmap * pixmap = ui->screenPix->pixmap();

    if(pixmap)
    {
        QString strName = QFileDialog::getSaveFileName(this,"保存截图");
        pixmap->save(strName);
    }
}



void screenshot::sl_exit()
{
    qDebug() << "sl_exit";
    this->close();
}

screenshot.ui
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值