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
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43066495/article/details/87641659